connect later #11

Merged
jusax23 merged 2 commits from dev into main 2023-02-25 19:12:17 +01:00
Showing only changes of commit e78e90d83c - Show all commits

View file

@ -10,15 +10,20 @@ import { insertResponse, readResponse, writeResponse, singleResponse } from "./r
export class DB { export class DB {
tables: Table[] = []; tables: Table[] = [];
handler: Handler; handler!: Handler;
name: string; name: string;
type: dbType; type!: dbType;
mariaPool!: mariadb.Pool; mariaPool!: mariadb.Pool;
private connected = false;
//pgPool!: pg.Pool; //pgPool!: pg.Pool;
constructor({ host, user, password, database, port = 3306, connectionLimit = 5, databaseType = dbType.mariadb }: { host: string, user: string, password: string, database: string, port?: number, connectionLimit?: number, databaseType?: dbType }) { constructor(database: string) {
this.name = database;
}
connect({ host, user, password, port = 3306, connectionLimit = 5, databaseType = dbType.mariadb }: { host: string, user: string, password: string, port?: number, connectionLimit?: number, databaseType?: dbType }) {
this.connected = true;
this.type = databaseType; this.type = databaseType;
if (databaseType == dbType.mariadb) { if (databaseType == dbType.mariadb) {
this.mariaPool = mariadb.createPool({ host, user, password, port, database, connectionLimit, multipleStatements: true }); this.mariaPool = mariadb.createPool({ host, user, password, port, database: this.name, connectionLimit, multipleStatements: true });
this.handler = new Handler(this); this.handler = new Handler(this);
} }
/*else if (databaseType == dbType.postgres) { /*else if (databaseType == dbType.postgres) {
@ -27,9 +32,10 @@ export class DB {
}*/ }*/
else throw new Error("Unsuported Database type!"); else throw new Error("Unsuported Database type!");
this.name = database;
} }
async query(query: Query, printQuery = false) { async query(query: Query, printQuery = false) {
if(!this.connected) throw new Error("Not connected yet!");
if (printQuery) console.log(query); if (printQuery) console.log(query);
if (this.type == dbType.mariadb) return await this.mariaPool.query(query); if (this.type == dbType.mariadb) return await this.mariaPool.query(query);
/*else if (this.type == dbType.postgres) { /*else if (this.type == dbType.postgres) {
@ -40,10 +46,12 @@ export class DB {
else throw new Error("Invalid Database Type!"); else throw new Error("Invalid Database Type!");
} }
getHandler() { getHandler() {
if(!this.connected) throw new Error("Not connected yet!");
return this.handler; return this.handler;
} }
async sync(force = false) { async sync(force = false) {
if(!this.connected) throw new Error("Not connected yet!");
let handler = this.getHandler(); let handler = this.getHandler();
await handler.syncDB(this, handler, force); await handler.syncDB(this, handler, force);
} }
@ -59,6 +67,7 @@ export class DB {
return null; return null;
} }
async close() { async close() {
if(!this.connected) throw new Error("Not connected yet!");
if (this.type == dbType.mariadb && this.mariaPool) await this.mariaPool.end(); if (this.type == dbType.mariadb && this.mariaPool) await this.mariaPool.end();
//if (this.type == dbType.postgres && this.pgPool) await this.pgPool.end(); //if (this.type == dbType.postgres && this.pgPool) await this.pgPool.end();
} }