UNPKG

@tsed/prisma

Version:

Generate Ts.ED JsonSchema based on Prisma models

27 lines (20 loc) 1.1 kB
import path from "node:path"; import {DMMF} from "@prisma/generator-helper"; import {toMap} from "@tsed/core"; import {Project} from "ts-morph"; import {DmmfEnum} from "../domain/DmmfEnum.js"; import {transformEnumsToEnums} from "../transform/transformEnumsToEnums.js"; import {generateDocuments} from "./generateDocuments.js"; import {generateOutputsBarrelFile} from "./generateOutputsBarrelFile.js"; export function generateEnums(dmmf: DMMF.Document, project: Project, baseDirPath: string): boolean { const enumsMap = toMap<string, DMMF.DatamodelEnum>(dmmf.datamodel.enums as any, "name"); const enums = DmmfEnum.getEnums(dmmf, enumsMap); const enumsDirPath = path.resolve(baseDirPath, "enums"); const enumsDirectory = project.createDirectory(enumsDirPath); const enumsIndex = enumsDirectory.createSourceFile(`index.ts`, undefined, {overwrite: true}); const exportedEnums = generateDocuments<DmmfEnum>(enums, enumsDirectory, (document) => transformEnumsToEnums(document)); if (enums.length) { return !!generateOutputsBarrelFile(enumsIndex, exportedEnums); } return false; }