aboutsummaryrefslogtreecommitdiff
path: root/src/lib/models/Mute.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/models/Mute.ts')
-rw-r--r--src/lib/models/Mute.ts90
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 }
+ );
+ }
+}