slovocast/server/src/infrastructure/database.ts

37 lines
964 B
TypeScript

import { PoolConnection, Pool, createPool } from 'mariadb';
type ConnectionConfig = {
host: string,
user: string,
password: string,
database: string,
port: number,
};
export default class Database {
private static instance: Database;
private pool: Pool;
private constructor(config: ConnectionConfig) {
this.pool = createPool(config);
}
public static getInstance(): Database {
if (!Database.instance) {
Database.instance = new Database({
host: process.env.DATABASE_HOST as string,
user: process.env.DATABASE_USER as string,
password: process.env.DATABASE_PASSWORD as string,
database: process.env.DATABASE_SCHEMA as string,
port: 3306
});
}
return Database.instance;
}
public async getConnection(): Promise<PoolConnection> {
return this.pool.getConnection();
}
}