diff --git a/src/db/connector.ts b/src/db/connector.ts index 8360deb544e07c6bb0f0406d1995770b36954d45..170e8988297ab78208b3b948793f658e1813012f 100644 --- a/src/db/connector.ts +++ b/src/db/connector.ts @@ -1,4 +1,4 @@ -export interface DatabaseConnector { +export interface IDatabaseConnector { Open(): void; Get(sql: string, parameters?: any): Promise<any>; All(sql: string, parameters?: any): Promise<any[]>; diff --git a/src/db/postgres.ts b/src/db/postgres.ts index f3bb2937b10f0a1016297673fcb2d0cd199fa8ec..b6655c49ec8c0406f4dfc24a3850e01c1c20476e 100644 --- a/src/db/postgres.ts +++ b/src/db/postgres.ts @@ -1,24 +1,28 @@ -import {IMain, IDatabase} from 'pg-promise'; +import {IMain, IDatabase} from "pg-promise"; +import * as pgPromise from "pg-promise"; import { Log } from "../log"; -import { DatabaseConnector } from "./connector"; +import { IDatabaseConnector } from "./connector"; const log = new Log("SQLite3"); -const pgPromise = require("pg-promise"); - const pgp: IMain = pgPromise({ // Initialization Options }); -export class Postgres implements DatabaseConnector { +export class Postgres implements IDatabaseConnector { + public static ParameterizeSql(sql: string): string { + return sql.replace(/\$((\w|\d|_)+)+/g, (k) => { + return "${" + k.substr("$".length) + "}"; + }); + } + private db: IDatabase<any>; constructor (private connectionString: string) { } - public Open() { // Hide username:password const logConnString = this.connectionString.substr( - this.connectionString.indexOf("@") || 0 + this.connectionString.indexOf("@") || 0, ); log.info(`Opening ${logConnString}`); this.db = pgp(this.connectionString); @@ -47,10 +51,4 @@ export class Postgres implements DatabaseConnector { log.silly("Exec:", sql); return this.db.none(sql); } - - public static ParameterizeSql(sql: string): string { - return sql.replace(/\$((\w|\d|_)+)+/g, (k) => { - return "${" + k.substr("$".length) + "}"; - }); - } } diff --git a/src/db/sqlite3.ts b/src/db/sqlite3.ts index 57ac65762e00d2bcde9d80f2529cf132acab6d45..2d68ab176bd7bde36e0a99890688622577881bcb 100644 --- a/src/db/sqlite3.ts +++ b/src/db/sqlite3.ts @@ -1,9 +1,9 @@ import * as Database from "better-sqlite3"; import { Log } from "../log"; -import { DatabaseConnector } from "./connector"; +import { IDatabaseConnector } from "./connector"; const log = new Log("SQLite3"); -export class SQLite3 implements DatabaseConnector { +export class SQLite3 implements IDatabaseConnector { private db: Database; constructor (private filename: string) { diff --git a/src/store.ts b/src/store.ts index ad6b48fcfcfd6c922a7159a1fbf88cc672826a92..562f52a74ae55a20060cd23e04c203ac4703c617 100644 --- a/src/store.ts +++ b/src/store.ts @@ -7,7 +7,7 @@ export const CURRENT_SCHEMA = 7; import { Log } from "./log"; import { DiscordBridgeConfigDatabase } from "./config"; import { Postgres } from "./db/postgres"; -import { DatabaseConnector } from "./db/connector"; +import { IDatabaseConnector } from "./db/connector"; const log = new Log("DiscordStore"); /** * Stores data for specific users and data not specific to rooms. @@ -16,11 +16,11 @@ export class DiscordStore { /** * @param {string} filepath Location of the SQLite database file. */ - public db: DatabaseConnector; + public db: IDatabaseConnector; private version: number; private config: DiscordBridgeConfigDatabase; constructor (private configOrFile: DiscordBridgeConfigDatabase|string) { - if (typeof(configOrFile) === "string"){ + if (typeof(configOrFile) === "string") { this.config = new DiscordBridgeConfigDatabase(); this.config.filename = configOrFile; } else { @@ -296,7 +296,7 @@ export class DiscordStore { this.db = new Postgres(this.config.connString); } try { - await this.db.Open(); + this.db.Open(); } catch (ex) { log.error("Error opening database:", ex); throw new Error("Couldn't open database. The appservice won't be able to continue."); diff --git a/test/test_channelsyncroniser.ts b/test/test_channelsyncroniser.ts index 8b5287123cecb88592e38535e6756a8d01d8fe3d..bc583596afbb03629ea940f61ab894afcf65c5b5 100644 --- a/test/test_channelsyncroniser.ts +++ b/test/test_channelsyncroniser.ts @@ -1,6 +1,5 @@ import * as Chai from "chai"; import * as ChaiAsPromised from "chai-as-promised"; -import * as log from "npmlog"; import * as Discord from "discord.js"; import * as Proxyquire from "proxyquire";