UNPKG

prisma-class-validator-generator

Version:

Prisma 2+ generator to emit typescript models of your database with class validator

45 lines 2.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generate = generate; const internals_1 = require("@prisma/internals"); const fs_1 = require("fs"); const path_1 = __importDefault(require("path")); const generate_class_1 = __importDefault(require("./generate-class")); const generate_enum_1 = __importDefault(require("./generate-enum")); const generate_helpers_1 = require("./generate-helpers"); const helpers_1 = require("./helpers"); const project_1 = require("./project"); const removeDir_1 = __importDefault(require("./utils/removeDir")); async function generate(options) { const outputDir = (0, internals_1.parseEnvValue)(options.generator.output); const config = { outputDir, swagger: options.generator.config?.swagger === 'true', separateRelationFields: options.generator.config?.separateRelationFields === 'true', }; await fs_1.promises.mkdir(outputDir, { recursive: true }); await (0, removeDir_1.default)(outputDir, true); const prismaClientProvider = options.otherGenerators.find((it) => (0, internals_1.parseEnvValue)(it.provider) === 'prisma-client-js'); const prismaClientDmmf = await (0, internals_1.getDMMF)({ datamodel: options.datamodel, previewFeatures: prismaClientProvider?.previewFeatures || [], }); const enumNames = new Set(); prismaClientDmmf.datamodel.enums.forEach((enumItem) => { enumNames.add(enumItem.name); (0, generate_enum_1.default)(project_1.project, outputDir, enumItem); }); if (enumNames.size > 0) { const enumsIndexSourceFile = project_1.project.createSourceFile(path_1.default.resolve(outputDir, 'enums', 'index.ts'), undefined, { overwrite: true }); (0, helpers_1.generateEnumsIndexFile)(enumsIndexSourceFile, [...enumNames]); } prismaClientDmmf.datamodel.models.forEach((model) => (0, generate_class_1.default)(project_1.project, config, model)); const helpersIndexSourceFile = project_1.project.createSourceFile(path_1.default.resolve(outputDir, 'helpers', 'index.ts'), undefined, { overwrite: true }); (0, generate_helpers_1.generateHelpersIndexFile)(helpersIndexSourceFile); (0, helpers_1.generateModelsIndexFile)(prismaClientDmmf, project_1.project, outputDir); await project_1.project.save(); } //# sourceMappingURL=prisma-generator.js.map