37 lines
1.1 KiB
TypeScript
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
|
|
}
|
|
}
|