diff --git a/src/db.ts b/src/db.ts index 47935fd..bb89b4f 100644 --- a/src/db.ts +++ b/src/db.ts @@ -10,15 +10,20 @@ import { insertResponse, readResponse, writeResponse, singleResponse } from "./r export class DB { tables: Table[] = []; - handler: Handler; + handler!: Handler; name: string; - type: dbType; + type!: dbType; mariaPool!: mariadb.Pool; + private connected = false; //pgPool!: pg.Pool; - constructor({ host, user, password, database, connectionLimit = 5, databaseType = dbType.mariadb }: { host: string, user: string, password: string, database: string, 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; if (databaseType == dbType.mariadb) { - this.mariaPool = mariadb.createPool({ host, user, password, database, connectionLimit, multipleStatements: true }); + this.mariaPool = mariadb.createPool({ host, user, password, port, database: this.name, connectionLimit, multipleStatements: true }); this.handler = new Handler(this); } /*else if (databaseType == dbType.postgres) { @@ -27,10 +32,11 @@ export class DB { }*/ else throw new Error("Unsuported Database type!"); - this.name = database; + } async query(query: Query, printQuery = false) { - if(printQuery)console.log(query); + if(!this.connected) throw new Error("Not connected yet!"); + if (printQuery) console.log(query); if (this.type == dbType.mariadb) return await this.mariaPool.query(query); /*else if (this.type == dbType.postgres) { let res = await this.pgPool.query(query.sql, query.values); @@ -40,10 +46,12 @@ export class DB { else throw new Error("Invalid Database Type!"); } getHandler() { + if(!this.connected) throw new Error("Not connected yet!"); return this.handler; } async sync(force = false) { + if(!this.connected) throw new Error("Not connected yet!"); let handler = this.getHandler(); await handler.syncDB(this, handler, force); } @@ -59,6 +67,7 @@ export class DB { return null; } 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.postgres && this.pgPool) await this.pgPool.end(); } @@ -115,8 +124,8 @@ export class Attribute { toStringFunc(handler: Handler) { return this.table.serialize(handler) + "(" + this.serialize(handler) + ")"; } - toString(){ - return this.table.dbLangTableName + "_" + this.name; + toString() { + return this.table.dbLangTableName + "_" + this.name; } }