[GQL] dataloder에서 동일한 query 여러번 요청

바나나·2024년 12월 22일

GQL

목록 보기
2/3

프론트엔드에서 동일한 쿼리를 조건과 fragment 만 다르게 요청했을때 1개의 조건만 적용해서 동일한 결과물로 준다.

이때 아래 처럼 name을 가져와서 개별 처리 할 수 있도록 한다.

query GetUsersByDateRange($startDate7Days: String!, $endDate7Days: String!, $startDate30Days: String!, $endDate30Days: String!) {
  usersFor7Days: users(dateRange: { startDate: $startDate7Days, endDate: $endDate7Days }) {
    ...Last7DaysInfo
  }
  usersFor30Days: users(dateRange: { startDate: $startDate30Days, endDate: $endDate30Days }) {
    ...Last30DaysInfo
  }
}

fragment Last7DaysInfo on User {
  id
  name
  email
  createdAt
}

fragment Last30DaysInfo on User {
  id
  name
  email
  createdAt
  lastLogin
}
{
  "startDate7Days": "2024-12-16",
  "endDate7Days": "2024-12-23",
  "startDate30Days": "2024-11-23",
  "endDate30Days": "2024-12-23"
}
fun user(
        dfe: DgsDataFetchingEnvironment,
    ): CompletableFuture<User> {
    	// fragment 이름을 가져와서 구분한다.
        val fragment = dfe.field.alias ?: dfe.field.name
        // ...

위에 방법은 fragment 를 사용하는 경우고 사용안하는 경우가 있어 다른 방법을 고민이 필요하다.

profile
Java/Kotlin Spring 개발자 황재명입니다.

0개의 댓글