타입 지정 GraphQL

Fóir는 모델에서 GraphQL 스키마를 생성하며, 모델마다 타입이 지정된 쿼리, 뮤테이션, 입력을 제공합니다. 커밋한 타입이 더 이상 프로젝트와 일치하지 않으면 CLI 검사가 빌드에 알려 줍니다.

모델마다 생성되는 것

레코드를 보관하는 모델은 각각 단건 쿼리, 커서 페이지네이션 연결을 반환하는 복수형 쿼리, 생성, 업데이트, 삭제 뮤테이션, 그리고 타입이 지정된 필터, 정렬, 업데이트 입력을 생성합니다. 게시가 켜진 모델은 게시 및 게시 취소 뮤테이션도 생성됩니다. 필드는 레코드 타입의 최상위에 위치하며, 밑줄로 시작하는 시스템 필드와 나란히 놓입니다.

프로덕션 스키마가 바뀔 때

스키마는 초안과 게시됨, 두 채널로 제공됩니다. 모델을 수정하면 초안이 바뀌며, 프로덕션 키는 변경 사항이 반영되는 릴리스 전까지 게시된 스키마를 계속 사용합니다. 완전히 새로운 모델이나 오퍼레이션은 생성되는 즉시 릴리스되며, 선택 필드만 추가하는 모델 업데이트도 마찬가지입니다. 릴리스 후에는 모든 소비자에게 공개 스키마가 몇 초 안에 바뀝니다.

빌드 시점 검사

foir types 명령은 프로젝트에서 TypeScript 타입과 타입 지정 클라이언트의 선택 항목을 생성합니다. --check 옵션을 쓰면 아무것도 쓰지 않으며, 커밋된 파일이 새로 생성한 결과와 다르면 0이 아닌 값으로 종료합니다. CI에서 실행하면 프로젝트는 바뀌었는데 커밋된 타입이 그대로일 때 빌드가 실패합니다. 타입은 API 키별로 생성되므로 키가 수행할 수 없는 오퍼레이션은 없으며, 호출하면 컴파일 오류가 됩니다.

런타임 검사

생성된 클라이언트는 생성 이후 서버의 스키마가 바뀐 경우 클라이언트 인스턴스당 한 번 경고합니다. 제거된 필드나 인수처럼 더 이상 제공되지 않는 것에 의존하는 타입 지정 호출에서는 FoirSchemaDriftError 오류가 발생합니다.

타입 지정이 멈추는 곳

생성된 타입에서 정렬은 닫힌, 검사되는 타입입니다. 필터는 unknown으로 타입이 지정되며, 네임스페이스 오퍼레이션의 인수와 결과도 마찬가지입니다. 직접 작성한 GraphQL은 직접 관리하는 빌드 단계로서 스키마를 기준으로 graphql-codegen으로 타입을 지정할 수 있습니다.

자세한 내용 보기

GraphQL 가이드에 모델마다 생성되는 쿼리, 뮤테이션, 입력과 스키마를 살펴볼 수 있는 곳이 정리되어 있습니다.