NestJS · GraphQL

GraphQL Code-first 흐름

TypeScript 클래스와 데코레이터가 GraphQL 계약을 만들고, 리졸버가 그 계약의 실제 실행 경로를 담당한다.
핵심 산출물
@ObjectType
@InputType
@Resolver
schema.gql
코드의 타입 정보가 SDL로 모이고, 요청은 리졸버 메서드로 들어간다.
정의
TypeScript 클래스
응답 타입 Post와 User의 조회 가능한 필드를 고정한다.
입력 타입 CreatePostInput이 Mutation 인자 계약이 된다.
생성
autoSchemaFile
Decorator scan Field 정보와 타입 관계를 모은다.
SDL 출력 클라이언트가 보는 schema.gql을 만든다.
실행
Resolver 메서드
Query 읽기 요청을 데이터 소스에 매핑한다.
Mutation 입력 검증 뒤 상태 변경을 수행한다.
요청 담당 확인 지점
Query posts, post, author 필드를 필요한 데이터 소스에 연결한다. SDL의 필드 이름과 Playground 실행 이름이 맞는지 본다.
Mutation 입력 DTO를 검증하고 생성, 수정, 삭제 로직을 호출한다. InputType의 필수 필드와 서비스 호출 결과를 확인한다.
Subscription postAdded 이벤트 이터레이터를 구독자에게 연결한다. WebSocket 경로와 이벤트 이름을 함께 점검한다.
검증 기준
Code-first에서는 코드가 곧 계약의 원본이다. 그래서 클래스, 생성된 schema.gql, 실제 Resolver 실행 결과를 한 묶음으로 확인해야 한다.