UNPKG

zeroant-common

Version:
39 lines (31 loc) 953 B
import { AddonPlugin } from 'zeroant-factory/addon.plugin' import { DBConfig } from '../config/db.config.js' import { PrismaClient } from '@prisma/client' export class DBPlugin extends AddonPlugin { protected _dataSource: PrismaClient async initialize() { const prisma = new PrismaClient() this._dataSource = prisma } get repositories(): PrismaClient { return this._dataSource } repository<T extends keyof PrismaClient>(repository: T): PrismaClient[T] { return this.repositories[repository] } call<T extends keyof PrismaClient>(repository: T) { return this.repository(repository) } clone() { const options = this.context.config.addons.lazyGet(DBConfig).options const dataSource = new PrismaClient(options) return dataSource } destroy() { const prisma = this._dataSource prisma.$disconnect().catch((e: any) => this.context.log.info(e)) } close(): void { this.destroy() } }