enum은 특정 허용 값 집합으로 제한되는 특수한 종류의 스칼라입니다. 이 유형의 모든 인수가 허용되는 값 중 하나인지 확인합니다. 필드가 항상 유한한 값 집합 중 하나임을 유형 시스템을 통해 전달합니다.
code first 접근 방식을 사용할 때 TypeScript enum을 생성하여 GraphQL enum type을 정의합니다.
registerEnumType 함수를 사용하여 enum을 등록합니다.
[users] > [dtos] > create-account.dto.ts
파일을 생성한 후 CreateAccountInput class와 CreateAccountOutput class를 만듭니다.
users.resolver.ts
파일에서 Mutation 데코레이터를 생성한 뒤 반환값을 CreateAccountOutput로 설정해줍니다.
Mutation 데코레이터에서 createAccount 함수를 생성한 뒤 input 타입의 Args를 받으며 Args는 CreateAccountInput 타입을 받을 수 있습니다.
user.entity.ts
파일에서 role 타입을 enum 으로 바꾸고, GraphQL에서도 사용할 수 있도록 registerEnumType()를 사용해서 설정해준다. 설정한 enum은 Column, Field에 명시해줍니다.
users.service.ts
파일에서 db에 새로운 user를 생성할 수 있는 createAccount 함수를 만들어줍니다.
users.resolver.ts
파일에서 db 저장시 에러가 발생했을 때 에러처리합니다.