From 47f66e980761ad1218f51c7f51e51dd550bf0b35 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Sat, 18 Jul 2020 15:54:13 +0200 Subject: Data, data, daaaaaaaaataaaaaaaaaaaa! --- src/db/DBController.ts | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'src/db/DBController.ts') diff --git a/src/db/DBController.ts b/src/db/DBController.ts index 57c640b..2cfd1f2 100644 --- a/src/db/DBController.ts +++ b/src/db/DBController.ts @@ -2,19 +2,21 @@ import { Client } from "https://deno.land/x/mysql/mod.ts"; import { readFileStr } from "https://deno.land/std/fs/mod.ts"; export default class DBController { + private client?: Client; + async init() { - const conn = await this.connect(); + this.client = await this.connect(); try { const sql = await readFileStr("./src/db/tables.sql"); const queries = sql.split(";"); queries.pop(); - queries.forEach((query) => conn.execute(query)); + queries.forEach(async (query) => await this.execute(query)); console.log("Tables created"); } catch (e) { console.error("Could not create tables"); throw e; } finally { - conn.close(); + this.client.close(); } } @@ -31,4 +33,26 @@ export default class DBController { throw e; } } + + async execute(query: string) { + if (this.client) { + try { + return await this.client.execute(query); + } catch (e) { + throw e; + } + } else throw Error("Database isn't initialized yet!"); + } + + async execute_multiple(queries: string[]) { + await this.client!.transaction(async (conn) => { + queries.forEach(async (query) => { + await conn.execute(query); + }); + }); + } + + async close() { + await this.client!.close(); + } } -- cgit v1.2.3