import { EnumDeclarationStructure , StructureKind } from 'ts-morph' ; import { ImportDeclarationMap } from '../helpers/import-declaration-map' ; import { EventArguments , SchemaEnum } from '../types' ; export function registerEnum ( enumType , args ) { const { getSourceFile , enums } = args ; const dataModelEnum = enums [ enumType . name ] ; const sourceFile = getSourceFile ( { name : enumType . name , type : 'enum' , } ) ; const importDeclarations = new ImportDeclarationMap ( ) ; importDeclarations . set ( 'registerEnumType' , { namedImports : [ { name : 'registerEnumType' } ] , moduleSpecifier : '@nestjs/graphql' , } ) ; const enumStructure = { kind : StructureKind . Enum , isExported : true , name : enumType . name , members : enumType . values . map ( v => ( { name : v , initializer : JSON . stringify ( v ) , } ) ) , } ; sourceFile . set ( { statements : [ ... importDeclarations . toStatements ( ) , enumStructure , '\n' , `registerEnumType(${ enumType . name }, { name: '${ enumType . name }', description: ${ JSON . stringify ( dataModelEnum ?. documentation ) } })` , ] , } ) ; }