From d951add5a9589cbc776487fddbafd2f7e7f85271 Mon Sep 17 00:00:00 2001 From: Will Hunt <will@half-shot.uk> Date: Sat, 4 May 2019 21:12:48 +0100 Subject: [PATCH] replace snake_case func names with camelCase in store --- src/clientfactory.ts | 4 +- src/db/connector.ts | 2 +- src/db/dbdataemoji.ts | 2 +- src/db/postgres.ts | 4 +- src/db/schema/v1.ts | 4 +- src/db/schema/v2.ts | 4 +- src/db/schema/v3.ts | 6 +-- src/db/schema/v4.ts | 2 +- src/db/schema/v5.ts | 2 +- src/db/schema/v6.ts | 4 +- src/db/schema/v7.ts | 2 +- src/db/schema/v8.ts | 4 +- src/db/schema/v9.ts | 6 +-- src/db/sqlite3.ts | 2 +- src/store.ts | 81 ++++++-------------------------------- test/test_clientfactory.ts | 4 +- test/test_store.ts | 4 +- tools/userClientTools.ts | 4 +- 18 files changed, 42 insertions(+), 99 deletions(-) diff --git a/src/clientfactory.ts b/src/clientfactory.ts index bd76fe5..54e2694 100644 --- a/src/clientfactory.ts +++ b/src/clientfactory.ts @@ -83,12 +83,12 @@ export class DiscordClientFactory { return this.clients.get(userId) as DiscordClient; } - const discordIds = await this.store.get_user_discord_ids(userId); + const discordIds = await this.store.getUserDiscordIds(userId); if (discordIds.length === 0) { return this.botClient; } // TODO: Select a profile based on preference, not the first one. - const token = await this.store.get_token(discordIds[0]); + const token = await this.store.getToken(discordIds[0]); const client = new DiscordClient({ fetchAllMembers: true, messageCacheLifetime: 5, diff --git a/src/db/connector.ts b/src/db/connector.ts index e6bc7a0..64fd220 100644 --- a/src/db/connector.ts +++ b/src/db/connector.ts @@ -26,7 +26,7 @@ export interface ISqlRow { export interface IDatabaseConnector { Open(): void; - Get(sql: string, parameters?: ISqlCommandParameters): Promise<ISqlRow>; + Get(sql: string, parameters?: ISqlCommandParameters): Promise<ISqlRow|null>; All(sql: string, parameters?: ISqlCommandParameters): Promise<ISqlRow[]>; Run(sql: string, parameters?: ISqlCommandParameters): Promise<void>; Close(): Promise<void>; diff --git a/src/db/dbdataemoji.ts b/src/db/dbdataemoji.ts index 5f211a5..9b076b6 100644 --- a/src/db/dbdataemoji.ts +++ b/src/db/dbdataemoji.ts @@ -43,7 +43,7 @@ export class DbEmoji implements IDbData { mxc: params.mxc_url, }); this.Result = Boolean(row); // check if row exists - if (this.Result) { + if (this.Result && row) { this.EmojiId = row.emoji_id as string; this.Name = row.name as string; this.Animated = Boolean(row.animated); diff --git a/src/db/postgres.ts b/src/db/postgres.ts index a7635eb..0b41112 100644 --- a/src/db/postgres.ts +++ b/src/db/postgres.ts @@ -44,7 +44,7 @@ export class Postgres implements IDatabaseConnector { this.db = pgp(this.connectionString); } - public async Get(sql: string, parameters?: ISqlCommandParameters): Promise<ISqlRow> { + public async Get(sql: string, parameters?: ISqlCommandParameters): Promise<ISqlRow|null> { log.silly("Get:", sql); return this.db.oneOrNone(Postgres.ParameterizeSql(sql), parameters); } @@ -63,7 +63,7 @@ export class Postgres implements IDatabaseConnector { public async Run(sql: string, parameters?: ISqlCommandParameters): Promise<void> { log.silly("Run:", sql); - return this.db.oneOrNone(Postgres.ParameterizeSql(sql), parameters); + return this.db.oneOrNone(Postgres.ParameterizeSql(sql), parameters).then(() => {}); } public async Close(): Promise<void> { diff --git a/src/db/schema/v1.ts b/src/db/schema/v1.ts index 63c0447..f7737dd 100644 --- a/src/db/schema/v1.ts +++ b/src/db/schema/v1.ts @@ -19,12 +19,12 @@ import {DiscordStore} from "../../store"; export class Schema implements IDbSchema { public description = "Schema, Client Auth Table"; public async run(store: DiscordStore): Promise<void> { - await store.create_table(` + await store.createTable(` CREATE TABLE schema ( version INTEGER UNIQUE NOT NULL );`, "schema"); await store.db.Exec("INSERT INTO schema VALUES (0);"); - await store.create_table(` + await store.createTable(` CREATE TABLE user_tokens ( userId TEXT UNIQUE NOT NULL, token TEXT UNIQUE NOT NULL diff --git a/src/db/schema/v2.ts b/src/db/schema/v2.ts index ce566f9..4a6ff55 100644 --- a/src/db/schema/v2.ts +++ b/src/db/schema/v2.ts @@ -20,13 +20,13 @@ export class Schema implements IDbSchema { public description = "Create DM Table, User Options"; public async run(store: DiscordStore): Promise<void> { await Promise.all([ - store.create_table(` + store.createTable(` CREATE TABLE dm_rooms ( discord_id TEXT NOT NULL, channel_id TEXT NOT NULL, room_id TEXT UNIQUE NOT NULL );`, "dm_rooms"), - store.create_table(` + store.createTable(` CREATE TABLE client_options ( discord_id TEXT UNIQUE NOT NULL, options INTEGER NOT NULL diff --git a/src/db/schema/v3.ts b/src/db/schema/v3.ts index c879aea..a24a139 100644 --- a/src/db/schema/v3.ts +++ b/src/db/schema/v3.ts @@ -24,13 +24,13 @@ const log = new Log("SchemaV3"); export class Schema implements IDbSchema { public description = "user_tokens split into user_id_discord_id"; public async run(store: DiscordStore): Promise<void> { - await Promise.all([store.create_table(` + await Promise.all([store.createTable(` CREATE TABLE user_id_discord_id ( discord_id TEXT NOT NULL, user_id TEXT NOT NULL, PRIMARY KEY(discord_id, user_id) );`, "user_id_discord_id"), - store.create_table(` + store.createTable(` CREATE TABLE discord_id_token ( discord_id TEXT UNIQUE NOT NULL, token TEXT NOT NULL, @@ -39,7 +39,7 @@ export class Schema implements IDbSchema { )]); // Backup before moving data. - await store.backup_database(); + await store.backupDatabase(); // Move old data to new tables. await this.moveUserIds(store); diff --git a/src/db/schema/v4.ts b/src/db/schema/v4.ts index 8787f45..6a44d19 100644 --- a/src/db/schema/v4.ts +++ b/src/db/schema/v4.ts @@ -20,7 +20,7 @@ import {DiscordStore} from "../../store"; export class Schema implements IDbSchema { public description = "create guild emoji table"; public async run(store: DiscordStore): Promise<void> { - await store.create_table(` + await store.createTable(` CREATE TABLE guild_emoji ( emoji_id TEXT NOT NULL, guild_id TEXT NOT NULL, diff --git a/src/db/schema/v5.ts b/src/db/schema/v5.ts index e9fa7fe..675bbfa 100644 --- a/src/db/schema/v5.ts +++ b/src/db/schema/v5.ts @@ -20,7 +20,7 @@ import {DiscordStore} from "../../store"; export class Schema implements IDbSchema { public description = "create event_store table"; public async run(store: DiscordStore): Promise<void> { - await store.create_table(` + await store.createTable(` CREATE TABLE event_store ( matrix_id TEXT NOT NULL, discord_id TEXT NOT NULL, diff --git a/src/db/schema/v6.ts b/src/db/schema/v6.ts index 02659d9..ce9f8f0 100644 --- a/src/db/schema/v6.ts +++ b/src/db/schema/v6.ts @@ -23,13 +23,13 @@ export class Schema implements IDbSchema { await store.db.Run( `DROP TABLE IF EXISTS event_store;`, ); - await store.create_table(` + await store.createTable(` CREATE TABLE event_store ( matrix_id TEXT NOT NULL, discord_id TEXT NOT NULL, PRIMARY KEY(matrix_id, discord_id) );`, "event_store"); - await store.create_table(` + await store.createTable(` CREATE TABLE discord_msg_store ( msg_id TEXT NOT NULL, guild_id TEXT NOT NULL, diff --git a/src/db/schema/v7.ts b/src/db/schema/v7.ts index fa025f2..879b34e 100644 --- a/src/db/schema/v7.ts +++ b/src/db/schema/v7.ts @@ -23,7 +23,7 @@ const log = new Log("SchemaV7"); export class Schema implements IDbSchema { public description = "create guild emoji table"; public async run(store: DiscordStore): Promise<void> { - await store.create_table(` + await store.createTable(` CREATE TABLE emoji ( emoji_id TEXT NOT NULL, name TEXT NOT NULL, diff --git a/src/db/schema/v8.ts b/src/db/schema/v8.ts index 96890f9..de611de 100644 --- a/src/db/schema/v8.ts +++ b/src/db/schema/v8.ts @@ -31,7 +31,7 @@ export class Schema implements IDbSchema { } public async run(store: DiscordStore): Promise<void> { - await store.create_table(` + await store.createTable(` CREATE TABLE remote_room_data ( room_id TEXT NOT NULL, discord_guild TEXT NOT NULL, @@ -48,7 +48,7 @@ export class Schema implements IDbSchema { PRIMARY KEY(room_id) );`, "remote_room_data"); - await store.create_table(` + await store.createTable(` CREATE TABLE room_entries ( id TEXT NOT NULL, matrix_id TEXT, diff --git a/src/db/schema/v9.ts b/src/db/schema/v9.ts index 59aa65c..3fddce0 100644 --- a/src/db/schema/v9.ts +++ b/src/db/schema/v9.ts @@ -32,7 +32,7 @@ export class Schema implements IDbSchema { } public async run(store: DiscordStore): Promise<void> { - await store.create_table(` + await store.createTable(` CREATE TABLE remote_user_guild_nicks ( remote_id TEXT NOT NULL, guild_id TEXT NOT NULL, @@ -40,7 +40,7 @@ export class Schema implements IDbSchema { PRIMARY KEY(remote_id, guild_id) );`, "remote_user_guild_nicks"); - await store.create_table(` + await store.createTable(` CREATE TABLE remote_user_data ( remote_id TEXT NOT NULL, displayname TEXT, @@ -49,7 +49,7 @@ export class Schema implements IDbSchema { PRIMARY KEY(remote_id) );`, "remote_user_data"); - await store.create_table(` + await store.createTable(` CREATE TABLE user_entries ( matrix_id TEXT, remote_id TEXT, diff --git a/src/db/sqlite3.ts b/src/db/sqlite3.ts index c7a706e..9076798 100644 --- a/src/db/sqlite3.ts +++ b/src/db/sqlite3.ts @@ -30,7 +30,7 @@ export class SQLite3 implements IDatabaseConnector { this.db = new Database(this.filename); } - public async Get(sql: string, parameters?: ISqlCommandParameters): Promise<ISqlRow> { + public async Get(sql: string, parameters?: ISqlCommandParameters): Promise<ISqlRow|null> { log.silly("Get:", sql); return this.db.prepare(sql).get(parameters || []); } diff --git a/src/store.ts b/src/store.ts index eb236d6..ebff5a1 100644 --- a/src/store.ts +++ b/src/store.ts @@ -55,7 +55,7 @@ export class DiscordStore { return this.pUserStore; } - public async backup_database(): Promise<void|{}> { + public async backupDatabase(): Promise<void|{}> { if (this.config.filename == null) { log.warn("Backups not supported on non-sqlite connector"); return; @@ -96,7 +96,7 @@ export class DiscordStore { const SCHEMA_ROOM_STORE_REQUIRED = 8; const SCHEMA_USER_STORE_REQUIRED = 9; log.info("Starting DB Init"); - await this.open_database(); + await this.openDatabase(); let version = await this.getSchemaVersion(); const targetSchema = overrideSchema || CURRENT_SCHEMA; log.info(`Database schema version is ${version}, latest version is ${targetSchema}`); @@ -136,7 +136,7 @@ export class DiscordStore { await this.db.Close(); } - public async create_table(statement: string, tablename: string): Promise<void|Error> { + public async createTable(statement: string, tablename: string): Promise<void|Error> { try { await this.db.Exec(statement); log.info("Created table", tablename); @@ -145,8 +145,8 @@ export class DiscordStore { } } - public async add_user_token(userId: string, discordId: string, token: string): Promise<void> { - log.silly("SQL", "add_user_token => ", userId); + public async addUserToken(userId: string, discordId: string, token: string): Promise<void> { + log.silly("SQL", "addUserToken => ", userId); try { await Promise.all([ this.db.Run( @@ -172,8 +172,8 @@ export class DiscordStore { } } - public async delete_user_token(discordId: string): Promise<void> { - log.silly("SQL", "delete_user_token => ", discordId); + public async deleteUserToken(discordId: string): Promise<void> { + log.silly("SQL", "deleteUserToken => ", discordId); try { await Promise.all([ this.db.Run( @@ -197,8 +197,8 @@ export class DiscordStore { } } - public async get_user_discord_ids(userId: string): Promise<string[]> { - log.silly("SQL", "get_user_discord_ids => ", userId); + public async getUserDiscordIds(userId: string): Promise<string[]> { + log.silly("SQL", "getUserDiscordIds => ", userId); try { const rows = await this.db.All( ` @@ -220,7 +220,7 @@ export class DiscordStore { } } - public async get_token(discordId: string): Promise<string> { + public async getToken(discordId: string): Promise<string> { log.silly("SQL", "discord_id_token => ", discordId); try { const row = await this.db.Get( @@ -238,63 +238,6 @@ export class DiscordStore { throw err; } } - - public async get_dm_room(discordId, discordChannel): Promise<string> { - log.silly("SQL", "get_dm_room => ", discordChannel); // Don't show discordId for privacy reasons - try { - const row = await this.db.Get( - ` - SELECT room_id - FROM dm_rooms - WHERE dm_rooms.discord_id = $discordId - AND dm_rooms.discord_channel = $discordChannel; - ` - , { - discordChannel, - discordId, - }); - return row ? row.room_id as string : ""; - } catch (err) { - log.error("Error getting room_id ", err.Error); - throw err; - } - } - - public async set_dm_room(discordId, discordChannel, roomId): Promise<void> { - log.silly("SQL", "set_dm_room => ", discordChannel); // Don't show discordId for privacy reasons - try { - await this.db.Run( - ` - REPLACE INTO dm_rooms (discord_id,discord_channel,room_id) - VALUES ($discordId,$discordChannel,$roomId); - ` - , { - discordChannel, - discordId, - roomId, - }); - } catch (err) { - log.error("Error executing set_dm_room query ", err.Error); - throw err; - } - } -/* - public async get_all_user_discord_ids(): Promise<any> { - log.silly("SQL", "get_users_tokens"); - try { - const rows = await this.db.All( - ` - SELECT * - FROM get_user_discord_ids - `, - ); - return rows; - } catch (err) { - log.error("Error getting user token ", err.Error); - throw err; - } - } -*/ // tslint:disable-next-line no-any public async Get<T extends IDbData>(dbType: {new(): T; }, params: any): Promise<T|null> { const dType = new dbType(); @@ -329,7 +272,7 @@ export class DiscordStore { let version = 0; try { const versionReply = await this.db.Get(`SELECT version FROM schema`); - version = versionReply.version as number; + version = versionReply!.version as number; } catch (er) { log.warn("Couldn't fetch schema version, defaulting to 0"); } @@ -346,7 +289,7 @@ export class DiscordStore { ); } - private async open_database(): Promise<void|Error> { + private async openDatabase(): Promise<void|Error> { if (this.config.filename) { log.info("Filename present in config, using sqlite"); this.db = new SQLite3(this.config.filename); diff --git a/test/test_clientfactory.ts b/test/test_clientfactory.ts index f31e9ee..b3d6df7 100644 --- a/test/test_clientfactory.ts +++ b/test/test_clientfactory.ts @@ -29,7 +29,7 @@ const DiscordClientFactory = Proxyquire("../src/clientfactory", { }).DiscordClientFactory; const STORE = { - get_token: async (discordid: string) => { + getToken: async (discordid: string) => { if (discordid === "12345") { return "passme"; } else if (discordid === "1234555") { @@ -37,7 +37,7 @@ const STORE = { } throw new Error("Token not found"); }, - get_user_discord_ids: async (userid: string) => { + getUserDiscordIds: async (userid: string) => { if (userid === "@valid:localhost") { return ["12345"]; } else if (userid === "@invalid:localhost") { diff --git a/test/test_store.ts b/test/test_store.ts index cc628bd..6c28640 100644 --- a/test/test_store.ts +++ b/test/test_store.ts @@ -37,11 +37,11 @@ describe("DiscordStore", () => { return store.init(); }); }); - describe("add_user_token", () => { + describe("addUserToken", () => { it("should not throw when adding an entry", async () => { const store = new DiscordStore(":memory:"); await store.init(); - await store.add_user_token("userid", "token", "discordid"); + await store.addUserToken("userid", "token", "discordid"); }); }); describe("Get|Insert|Update<DbEmoji>", () => { diff --git a/tools/userClientTools.ts b/tools/userClientTools.ts index f043bce..0aadc22 100644 --- a/tools/userClientTools.ts +++ b/tools/userClientTools.ts @@ -108,7 +108,7 @@ Please enter your Discord Token }); } else if (options.remove) { rl.close(); - discordstore.delete_user_token(userid).then(() => { + discordstore.deleteUserToken(userid).then(() => { log.info("Completed successfully"); process.exit(0); }).catch((err) => { @@ -122,5 +122,5 @@ Please enter your Discord Token async function addUserToken(userid: string, token: string): Promise<void> { const clientFactory = new DiscordClientFactory(discordstore); const discordid = await clientFactory.getDiscordId(token); - await discordstore.add_user_token(userid, discordid, token); + await discordstore.addUserToken(userid, discordid, token); } -- GitLab