import { BackendVariables } from "@Common/config/variables/Variables"; import { PrismaClient } from "@prisma/client"; import dotenv from "dotenv"; import Container from "typedi"; import IDatabaseConfig from "../../config/database/IDatabaseConfig"; dotenv.config(); export default class DbProvider { protected readonly variables = Container.get(BackendVariables); protected url = `postgres://${this.variables.DATABASE_USERNAME}:${this.variables.DATABASE_PASSWORD}@${this.variables.DATABASE_HOST}:${this.variables.DATABASE_PORT}/${this.variables.DATABASE_NAME}`; protected client = new PrismaClient({ datasources: { db: { url: this.url, }, }, }); constructor(protected config: IDatabaseConfig) {} public async connect(): Promise { await this.client.$connect(); console.info(`⚡️[Prisma]: Connected to ${this.config.name}`); // A Logger middleware is to be added here } public getClient() { return this.client; } public async disconnect(): Promise { await this.client.$disconnect(); console.info(`⚡️[Prisma]: Disconnected from ${this.config.name}`); // A Logger middleware is to be added here } }