Skip to content
Extraits de code Groupes Projets
Valider bf9b879a rédigé par Will Hunt's avatar Will Hunt
Parcourir les fichiers

Cleanup duty

parent fbbf92e6
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
export interface DatabaseConnector { export interface IDatabaseConnector {
Open(): void; Open(): void;
Get(sql: string, parameters?: any): Promise<any>; Get(sql: string, parameters?: any): Promise<any>;
All(sql: string, parameters?: any): Promise<any[]>; All(sql: string, parameters?: any): Promise<any[]>;
......
import {IMain, IDatabase} from 'pg-promise'; import {IMain, IDatabase} from "pg-promise";
import * as pgPromise from "pg-promise";
import { Log } from "../log"; import { Log } from "../log";
import { DatabaseConnector } from "./connector"; import { IDatabaseConnector } from "./connector";
const log = new Log("SQLite3"); const log = new Log("SQLite3");
const pgPromise = require("pg-promise");
const pgp: IMain = pgPromise({ const pgp: IMain = pgPromise({
// Initialization Options // 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>; private db: IDatabase<any>;
constructor (private connectionString: string) { constructor (private connectionString: string) {
} }
public Open() { public Open() {
// Hide username:password // Hide username:password
const logConnString = this.connectionString.substr( const logConnString = this.connectionString.substr(
this.connectionString.indexOf("@") || 0 this.connectionString.indexOf("@") || 0,
); );
log.info(`Opening ${logConnString}`); log.info(`Opening ${logConnString}`);
this.db = pgp(this.connectionString); this.db = pgp(this.connectionString);
...@@ -47,10 +51,4 @@ export class Postgres implements DatabaseConnector { ...@@ -47,10 +51,4 @@ export class Postgres implements DatabaseConnector {
log.silly("Exec:", sql); log.silly("Exec:", sql);
return this.db.none(sql); return this.db.none(sql);
} }
public static ParameterizeSql(sql: string): string {
return sql.replace(/\$((\w|\d|_)+)+/g, (k) => {
return "${" + k.substr("$".length) + "}";
});
}
} }
import * as Database from "better-sqlite3"; import * as Database from "better-sqlite3";
import { Log } from "../log"; import { Log } from "../log";
import { DatabaseConnector } from "./connector"; import { IDatabaseConnector } from "./connector";
const log = new Log("SQLite3"); const log = new Log("SQLite3");
export class SQLite3 implements DatabaseConnector { export class SQLite3 implements IDatabaseConnector {
private db: Database; private db: Database;
constructor (private filename: string) { constructor (private filename: string) {
......
...@@ -7,7 +7,7 @@ export const CURRENT_SCHEMA = 7; ...@@ -7,7 +7,7 @@ export const CURRENT_SCHEMA = 7;
import { Log } from "./log"; import { Log } from "./log";
import { DiscordBridgeConfigDatabase } from "./config"; import { DiscordBridgeConfigDatabase } from "./config";
import { Postgres } from "./db/postgres"; import { Postgres } from "./db/postgres";
import { DatabaseConnector } from "./db/connector"; import { IDatabaseConnector } from "./db/connector";
const log = new Log("DiscordStore"); const log = new Log("DiscordStore");
/** /**
* Stores data for specific users and data not specific to rooms. * Stores data for specific users and data not specific to rooms.
...@@ -16,7 +16,7 @@ export class DiscordStore { ...@@ -16,7 +16,7 @@ export class DiscordStore {
/** /**
* @param {string} filepath Location of the SQLite database file. * @param {string} filepath Location of the SQLite database file.
*/ */
public db: DatabaseConnector; public db: IDatabaseConnector;
private version: number; private version: number;
private config: DiscordBridgeConfigDatabase; private config: DiscordBridgeConfigDatabase;
constructor (private configOrFile: DiscordBridgeConfigDatabase|string) { constructor (private configOrFile: DiscordBridgeConfigDatabase|string) {
...@@ -296,7 +296,7 @@ export class DiscordStore { ...@@ -296,7 +296,7 @@ export class DiscordStore {
this.db = new Postgres(this.config.connString); this.db = new Postgres(this.config.connString);
} }
try { try {
await this.db.Open(); this.db.Open();
} catch (ex) { } catch (ex) {
log.error("Error opening database:", ex); log.error("Error opening database:", ex);
throw new Error("Couldn't open database. The appservice won't be able to continue."); throw new Error("Couldn't open database. The appservice won't be able to continue.");
......
import * as Chai from "chai"; import * as Chai from "chai";
import * as ChaiAsPromised from "chai-as-promised"; import * as ChaiAsPromised from "chai-as-promised";
import * as log from "npmlog";
import * as Discord from "discord.js"; import * as Discord from "discord.js";
import * as Proxyquire from "proxyquire"; import * as Proxyquire from "proxyquire";
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter