import { Snowflake } from 'discord.js'; import { DataTypes, Sequelize } from 'sequelize'; import { BaseModel } from './BaseModel'; import { jsonArrayInit, NEVER_USED } from './__helpers'; export interface StickyRoleModel { user: Snowflake; guild: Snowflake; roles: Snowflake[]; nickname: string; } export interface StickyRoleModelCreationAttributes { user: Snowflake; guild: Snowflake; roles: Snowflake[]; nickname?: string; } export class StickyRole extends BaseModel<StickyRoleModel, StickyRoleModelCreationAttributes> implements StickyRoleModel { /** * The id of the user the roles belongs to */ public get user(): Snowflake { throw new Error(NEVER_USED); } public set user(_: Snowflake) { throw new Error(NEVER_USED); } /** * The guild where this should happen */ public get guild(): Snowflake { throw new Error(NEVER_USED); } public set guild(_: Snowflake) { throw new Error(NEVER_USED); } /** * The roles that the user should have returned */ public get roles(): Snowflake[] { throw new Error(NEVER_USED); } public set roles(_: Snowflake[]) { throw new Error(NEVER_USED); } /** * The user's previous nickname */ public get nickname(): string { throw new Error(NEVER_USED); } public set nickname(_: string) { throw new Error(NEVER_USED); } public static initModel(sequelize: Sequelize): void { StickyRole.init( { user: { type: DataTypes.STRING, allowNull: false }, guild: { type: DataTypes.STRING, allowNull: false }, roles: jsonArrayInit('roles'), nickname: { type: DataTypes.STRING, allowNull: true } }, { sequelize } ); } }