2023-04-25 17:08:26 +02:00

37 lines
1.1 KiB
TypeScript

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<void> {
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<void> {
await this.client.$disconnect();
console.info(`⚡️[Prisma]: Disconnected from ${this.config.name}`); // A Logger middleware is to be added here
}
}