UNPKG

@tsed/prisma

Version:

Generate Ts.ED JsonSchema based on Prisma models

78 lines 2.35 kB
import path from "node:path"; import { Scope } from "ts-morph"; import { resolveExtension } from "./resolveExtension.js"; export function generatePrismaService(project, baseDirPath) { const directory = project.createDirectory(path.resolve(baseDirPath, "services")); const prismaServiceFile = directory.createSourceFile("PrismaService.ts", "", { overwrite: true }); prismaServiceFile.addImportDeclarations([ { moduleSpecifier: "@tsed/di", namedImports: ["Inject", "Injectable", "Configuration", "OnInit", "OnDestroy"] }, { moduleSpecifier: "@tsed/logger", namedImports: ["Logger"] }, { moduleSpecifier: resolveExtension("../client/index"), namedImports: ["PrismaClient"] } ]); const prismaService = prismaServiceFile.addClass({ name: "PrismaService", isExported: true, decorators: [ { name: "Injectable", arguments: [] } ], extends: "PrismaClient", implements: ["OnInit", "OnDestroy"] }); prismaService.addProperty({ name: "logger", scope: Scope.Protected, type: "Logger", decorators: [ { name: "Inject", arguments: [] } ] }); prismaService .addConstructor({ parameters: [ { name: "settings", type: "Configuration", decorators: [ { name: "Configuration", arguments: [] } ] } ] }) .setBodyText("super(settings.get('prisma'));"); prismaService .addMethod({ name: "$onInit", isAsync: true, returnType: "Promise<void>" }) .setBodyText(`this.logger.info("Connection to prisma database"); await this.$connect();`); prismaService .addMethod({ name: "$onDestroy", isAsync: true, returnType: "Promise<void>" }) .setBodyText(`this.logger.info("Disconnection from prisma database"); await this.$disconnect();`); return prismaService; } //# sourceMappingURL=generatePrismaService.js.map