diff options
Diffstat (limited to 'src/lib/models/Mute.ts')
-rw-r--r-- | src/lib/models/Mute.ts | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/lib/models/Mute.ts b/src/lib/models/Mute.ts new file mode 100644 index 0000000..273d5b1 --- /dev/null +++ b/src/lib/models/Mute.ts @@ -0,0 +1,90 @@ +import { Snowflake } from 'discord.js'; +import { DataTypes, Sequelize } from 'sequelize'; +import { v4 as uuidv4 } from 'uuid'; +import { BaseModel } from './BaseModel'; + +export interface MuteModel { + id: string; + user: string; + guild: string; + reason: string; + expires: Date; + modlog: string; +} +export interface MuteModelCreationAttributes { + id?: string; + user: string; + guild: string; + reason?: string; + expires?: Date; + modlog: string; +} + +export class Mute extends BaseModel<MuteModel, MuteModelCreationAttributes> implements MuteModel { + /** + * The ID of this mute (no real use just for a primary key) + */ + id: string; + /** + * The user who is muted + */ + user: Snowflake; + /** + * The guild they are muted in + */ + guild: Snowflake; + /** + * The reason they are muted (optional) + */ + reason: string | null; + /** + * The date at which this Mute expires and should be unmuted (optional) + */ + expires: Date | null; + /** + * The ref to the modlog entry + */ + modlog: string; + + static initModel(sequelize: Sequelize): void { + Mute.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: 'Guilds', + key: 'id' + } + }, + expires: { + type: DataTypes.DATE, + allowNull: true + }, + reason: { + type: DataTypes.STRING, + allowNull: true + }, + modlog: { + type: DataTypes.STRING, + allowNull: false, + references: { + model: 'ModLogs', + key: 'id' + } + } + }, + { sequelize: sequelize } + ); + } +} |