37 lines
964 B
TypeScript
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();
|
|
}
|
|
}
|