diff options
author | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2022-02-04 11:05:30 -0500 |
---|---|---|
committer | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2022-02-04 11:05:30 -0500 |
commit | e5bc336f9586b1f5515be3f1d239d2194489e9c5 (patch) | |
tree | 5bcf124dc277f23ee5b812b9f93a385bf9180f1f /src/lib/models/shared/Global.ts | |
parent | 2db87acac4fe36baa93db0a8e52d7a83b3ce2998 (diff) | |
download | tanzanite-e5bc336f9586b1f5515be3f1d239d2194489e9c5.tar.gz tanzanite-e5bc336f9586b1f5515be3f1d239d2194489e9c5.tar.bz2 tanzanite-e5bc336f9586b1f5515be3f1d239d2194489e9c5.zip |
refactor models
Diffstat (limited to 'src/lib/models/shared/Global.ts')
-rw-r--r-- | src/lib/models/shared/Global.ts | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/lib/models/shared/Global.ts b/src/lib/models/shared/Global.ts new file mode 100644 index 0000000..6dfc36f --- /dev/null +++ b/src/lib/models/shared/Global.ts @@ -0,0 +1,64 @@ +import { type Snowflake } from 'discord.js'; +import { type Sequelize } from 'sequelize'; +import { BaseModel } from '../BaseModel.js'; +const { DataTypes } = (await import('sequelize')).default; + +export interface GlobalModel { + environment: 'production' | 'development' | 'beta'; + disabledCommands: string[]; + blacklistedUsers: Snowflake[]; + blacklistedGuilds: Snowflake[]; + blacklistedChannels: Snowflake[]; +} + +export interface GlobalModelCreationAttributes { + environment: 'production' | 'development' | 'beta'; + disabledCommands?: string[]; + blacklistedUsers?: Snowflake[]; + blacklistedGuilds?: Snowflake[]; + blacklistedChannels?: Snowflake[]; +} + +export class Global extends BaseModel<GlobalModel, GlobalModelCreationAttributes> implements GlobalModel { + /** + * The bot's environment. + */ + public declare environment: 'production' | 'development' | 'beta'; + + /** + * Globally disabled commands. + */ + public declare disabledCommands: string[]; + + /** + * Globally blacklisted users. + */ + public declare blacklistedUsers: Snowflake[]; + + /** + * Guilds blacklisted from using the bot. + */ + public declare blacklistedGuilds: Snowflake[]; + + /** + * Channels where the bot is prevented from running commands in. + */ + public declare blacklistedChannels: Snowflake[]; + + /** + * Initializes the model. + * @param sequelize The sequelize instance. + */ + public static initModel(sequelize: Sequelize): void { + Global.init( + { + environment: { type: DataTypes.STRING, primaryKey: true }, + disabledCommands: { type: DataTypes.JSONB, allowNull: false, defaultValue: [] }, + blacklistedUsers: { type: DataTypes.JSONB, allowNull: false, defaultValue: [] }, + blacklistedGuilds: { type: DataTypes.JSONB, allowNull: false, defaultValue: [] }, + blacklistedChannels: { type: DataTypes.JSONB, allowNull: false, defaultValue: [] } + }, + { sequelize } + ); + } +} |