diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/extensions/BotClient.ts | 118 | ||||
-rw-r--r-- | src/lib/models/Ban.ts | 44 | ||||
-rw-r--r-- | src/lib/models/Guild.ts | 19 | ||||
-rw-r--r-- | src/lib/models/Level.ts | 19 | ||||
-rw-r--r-- | src/lib/models/Modlog.ts | 50 |
5 files changed, 136 insertions, 114 deletions
diff --git a/src/lib/extensions/BotClient.ts b/src/lib/extensions/BotClient.ts index 99b40ef..76b1a1b 100644 --- a/src/lib/extensions/BotClient.ts +++ b/src/lib/extensions/BotClient.ts @@ -6,13 +6,12 @@ import { } from 'discord-akairo'; import { Guild } from 'discord.js'; import * as path from 'path'; -import { DataTypes, Sequelize } from 'sequelize'; +import { Sequelize } from 'sequelize'; import * as Models from '../models'; import { BotGuild } from './BotGuild'; import { BotMessage } from './BotMessage'; import { Util } from './Util'; import * as Tasks from '../../tasks'; -import { v4 as uuidv4 } from 'uuid'; import { exit } from 'process'; import { Intents } from 'discord.js'; import * as config from '../../config/options'; @@ -139,117 +138,10 @@ export class BotClient extends AkairoClient { public async dbPreInit(): Promise<void> { await this.db.authenticate(); - Models.Guild.init( - { - id: { - type: DataTypes.STRING, - primaryKey: true - }, - prefix: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: this.config.prefix - } - }, - { sequelize: this.db } - ); - Models.Modlog.init( - { - id: { - type: DataTypes.STRING, - primaryKey: true, - allowNull: false, - defaultValue: uuidv4 - }, - type: { - type: new DataTypes.ENUM( - 'BAN', - 'TEMPBAN', - 'MUTE', - 'TEMPMUTE', - 'KICK', - 'WARN' - ), - allowNull: false - }, - user: { - type: DataTypes.STRING, - allowNull: false - }, - moderator: { - type: DataTypes.STRING, - allowNull: false - }, - duration: { - type: DataTypes.STRING, - allowNull: true - }, - reason: { - type: DataTypes.STRING, - allowNull: true - }, - guild: { - type: DataTypes.STRING, - references: { - model: Models.Guild - } - } - }, - { sequelize: this.db } - ); - Models.Ban.init( - { - id: { - type: DataTypes.STRING, - primaryKey: true, - allowNull: false, - defaultValue: uuidv4 - }, - user: { - type: DataTypes.STRING, - allowNull: false - }, - guild: { - type: DataTypes.STRING, - allowNull: false, - references: { - model: Models.Guild, - key: 'id' - } - }, - expires: { - type: DataTypes.DATE, - allowNull: true - }, - reason: { - type: DataTypes.STRING, - allowNull: true - }, - modlog: { - type: DataTypes.STRING, - allowNull: false, - references: { - model: Models.Modlog - } - } - }, - { sequelize: this.db } - ); - Models.Level.init( - { - id: { - type: DataTypes.STRING, - primaryKey: true, - allowNull: false - }, - xp: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: 0 - } - }, - { sequelize: this.db } - ); + Models.Guild.initModel(this.db, this); + Models.Modlog.initModel(this.db); + Models.Ban.initModel(this.db); + Models.Level.initModel(this.db); try { await this.db.sync(); // Sync all tables to fix everything if updated } catch { diff --git a/src/lib/models/Ban.ts b/src/lib/models/Ban.ts index 032a48b..c30c4c5 100644 --- a/src/lib/models/Ban.ts +++ b/src/lib/models/Ban.ts @@ -1,4 +1,7 @@ +import { DataTypes, Sequelize } from 'sequelize'; import { BaseModel } from './BaseModel'; +import * as Models from './'; +import { v4 as uuidv4 } from 'uuid'; export interface BanModel { id: string; @@ -44,4 +47,45 @@ export class Ban * The ref to the modlog entry */ modlog: string; + + static initModel(sequelize: Sequelize): void { + Ban.init( + { + id: { + type: DataTypes.STRING, + primaryKey: true, + allowNull: false, + defaultValue: uuidv4 + }, + user: { + type: DataTypes.STRING, + allowNull: false + }, + guild: { + type: DataTypes.STRING, + allowNull: false, + references: { + model: Models.Guild, + key: 'id' + } + }, + expires: { + type: DataTypes.DATE, + allowNull: true + }, + reason: { + type: DataTypes.STRING, + allowNull: true + }, + modlog: { + type: DataTypes.STRING, + allowNull: false, + references: { + model: Models.Modlog + } + } + }, + { sequelize: sequelize } + ); + } } diff --git a/src/lib/models/Guild.ts b/src/lib/models/Guild.ts index 3e6c6bf..e4e317f 100644 --- a/src/lib/models/Guild.ts +++ b/src/lib/models/Guild.ts @@ -1,4 +1,5 @@ -import { Optional } from 'sequelize'; +import { DataTypes, Optional, Sequelize } from 'sequelize'; +import { BotClient } from '../extensions/BotClient'; import { BaseModel } from './BaseModel'; export interface GuildModel { @@ -12,4 +13,20 @@ export class Guild implements GuildModel { id: string; prefix: string; + static initModel(seqeulize: Sequelize, client: BotClient): void { + Guild.init( + { + id: { + type: DataTypes.STRING, + primaryKey: true + }, + prefix: { + type: DataTypes.STRING, + allowNull: false, + defaultValue: client.config.prefix + } + }, + { sequelize: seqeulize } + ); + } } diff --git a/src/lib/models/Level.ts b/src/lib/models/Level.ts index f08f29b..426ec1a 100644 --- a/src/lib/models/Level.ts +++ b/src/lib/models/Level.ts @@ -1,3 +1,4 @@ +import { DataTypes, Sequelize } from 'sequelize'; import { BaseModel } from './BaseModel'; export interface LevelModel { @@ -16,6 +17,24 @@ export class Level extends BaseModel<LevelModel, LevelModelCreationAttributes> { get level(): number { return Level.convertXpToLevel(this.xp); } + + static initModel(sequelize: Sequelize): void { + Level.init( + { + id: { + type: DataTypes.STRING, + primaryKey: true, + allowNull: false + }, + xp: { + type: DataTypes.INTEGER, + allowNull: false, + defaultValue: 0 + } + }, + { sequelize: sequelize } + ); + } static convertXpToLevel(xp: number): number { let i = 1; let lvl: number; diff --git a/src/lib/models/Modlog.ts b/src/lib/models/Modlog.ts index 0a3feba..6dd5e26 100644 --- a/src/lib/models/Modlog.ts +++ b/src/lib/models/Modlog.ts @@ -1,4 +1,7 @@ +import { DataTypes, Sequelize } from 'sequelize'; import { BaseModel } from './BaseModel'; +import { v4 as uuidv4 } from 'uuid'; +import * as Models from './'; export enum ModlogType { BAN = 'BAN', @@ -39,4 +42,51 @@ export class Modlog guild: string; reason: string | null; duration: number | null; + + static initModel(sequelize: Sequelize): void { + Modlog.init( + { + id: { + type: DataTypes.STRING, + primaryKey: true, + allowNull: false, + defaultValue: uuidv4 + }, + type: { + type: new DataTypes.ENUM( + 'BAN', + 'TEMPBAN', + 'MUTE', + 'TEMPMUTE', + 'KICK', + 'WARN' + ), + allowNull: false + }, + user: { + type: DataTypes.STRING, + allowNull: false + }, + moderator: { + type: DataTypes.STRING, + allowNull: false + }, + duration: { + type: DataTypes.STRING, + allowNull: true + }, + reason: { + type: DataTypes.STRING, + allowNull: true + }, + guild: { + type: DataTypes.STRING, + references: { + model: Models.Guild + } + } + }, + { sequelize: sequelize } + ); + } } |