스키마 퍼스트는 graphql 에서 스키마파일에 스키마를 먼저정의한 후 그 스키마에맞게 코드를 작성하는 방법임
스키마를 작성하기 위해서는 그래프큐엘의 데이타모델을 나타내기위해만들어진sdl을 사용함
코드예시
// cat.graphql
type Query {
cats: [Cat]
cat(id: ID!): Cat
}
type Mutation {
createCat(createCatInput: CreateCatInput): Cat
}
type Subscription {
catCreated: Cat
}
type Owner {
id: Int!
name: String!
age: Int
cats: [Cat!]
}
type Cat {
id: Int
name: String
age: Int
owner: Owner
}
input CreateCatInput {
name: String
age: Int
}
위에서 보는 바와같이 조회할 자료들을 직접 다 작성해주어야한다.
코드퍼스트 방식은 현재 nestjs를 배우면서 현재 사용하고 있는 방식인데
데코레이터와 typescript클래스를 사용해 먼저 작성된 resolver를 기반으로 graphql스키마를 자동으로 생성시킴 말그대로 코드가 먼저 작성된 후에 스키마가 작성되기 때문에 코드퍼스트임
작성방식
GraphQLModule.forRoot<ApolloDriverConfig>({
driver: ApolloDriver,
autoSchemaFile: 'src/common/graphql/schema.gql',
})