@tsed/prisma
Version:
Generate Ts.ED JsonSchema based on Prisma models
27 lines (20 loc) • 1.1 kB
text/typescript
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;
}