From e9fb76f76d0f10a0f9f59b0f17a58d1a255bfbae Mon Sep 17 00:00:00 2001 From: Dragory Date: Sat, 7 Jul 2018 17:00:50 +0300 Subject: [PATCH] Use a model class for mod actions --- src/data/GuildModActions.ts | 27 ++++++++++++++++++--------- src/models/ModAction.ts | 14 ++++++++++++++ src/models/Model.ts | 7 +++++++ 3 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 src/models/ModAction.ts create mode 100644 src/models/Model.ts diff --git a/src/data/GuildModActions.ts b/src/data/GuildModActions.ts index 57fd359c..2d4eead3 100644 --- a/src/data/GuildModActions.ts +++ b/src/data/GuildModActions.ts @@ -1,4 +1,5 @@ import knex from "../knex"; +import ModAction from "../models/ModAction"; export class GuildModActions { protected guildId: string; @@ -7,34 +8,42 @@ export class GuildModActions { this.guildId = guildId; } - find(id: number) { - return knex("mod_actions") + async find(id: number): Promise { + const result = await knex("mod_actions") .where("guild_id", this.guildId) .where("id", id) .first(); + + return result ? new ModAction(result) : null; } - findByCaseNumber(caseNumber: number) { - return knex("mod_actions") + async findByCaseNumber(caseNumber: number): Promise { + const result = await knex("mod_actions") .where("guild_id", this.guildId) .where("case_number", caseNumber) .first(); + + return result ? new ModAction(result) : null; } - getActionNotes(actionId: number) { - return knex("mod_action_notes") + async getActionNotes(actionId: number): Promise { + const results = await knex("mod_action_notes") .where("mod_action_id", actionId) .select(); + + return results.map(r => new ModAction(r)); } - getByUserId(userId: string) { - return knex("mod_actions") + async getByUserId(userId: string): Promise { + const results = await knex("mod_actions") .where("guild_id", this.guildId) .where("user_id", userId) .select(); + + return results.map(r => new ModAction(r)); } - create(data) { + async create(data): Promise { return knex .insert({ ...data, diff --git a/src/models/ModAction.ts b/src/models/ModAction.ts new file mode 100644 index 00000000..9951c29c --- /dev/null +++ b/src/models/ModAction.ts @@ -0,0 +1,14 @@ +import Model from "./Model"; + +export default class ModAction extends Model { + public id: number; + public guild_id: string; + public case_number: number; + public user_id: string; + public user_name: string; + public mod_id: string; + public mod_name: string; + public action_type: number; + public audit_log_id: string; + public created_at: string; +} diff --git a/src/models/Model.ts b/src/models/Model.ts new file mode 100644 index 00000000..28643e75 --- /dev/null +++ b/src/models/Model.ts @@ -0,0 +1,7 @@ +export default class Model { + constructor(props) { + for (const key in props) { + this[key] = props[key]; + } + } +}