UNPKG

@tsed/prisma

Version:

Generate Ts.ED JsonSchema based on Prisma models

30 lines (23 loc) 1.24 kB
import path from "node:path"; import {DMMF} from "@prisma/generator-helper"; import {getValue, toMap} from "@tsed/core"; import {Project} from "ts-morph"; import {DmmfModel} from "../domain/DmmfModel.js"; import {transformModelToClass} from "../transform/transformModelToClass.js"; import {generateDocuments} from "./generateDocuments.js"; import {generateOutputsBarrelFile} from "./generateOutputsBarrelFile.js"; export function generateModels(dmmf: DMMF.Document, project: Project, baseDirPath: string) { const modelsMap = toMap<string, DMMF.Model>(getValue(dmmf, "datamodel.models", []), "name"); const typesMap = toMap<string, DMMF.Model>(getValue(dmmf, "datamodel.types", []), "name"); const models = DmmfModel.getModels(dmmf, modelsMap, typesMap); const modelsDirPath = path.resolve(baseDirPath, "models"); const modelsDirectory = project.createDirectory(modelsDirPath); const modelsIndex = modelsDirectory.createSourceFile(`index.ts`, undefined, {overwrite: true}); const exportedModels = generateDocuments<DmmfModel>(models, modelsDirectory, (model, sourceFile) => { return transformModelToClass(model, { dmmf, modelsMap }); }); generateOutputsBarrelFile(modelsIndex, exportedModels); }