diff options
Diffstat (limited to 'src/lib/models/Stat.ts')
-rw-r--r-- | src/lib/models/Stat.ts | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/lib/models/Stat.ts b/src/lib/models/Stat.ts new file mode 100644 index 0000000..9391ad4 --- /dev/null +++ b/src/lib/models/Stat.ts @@ -0,0 +1,58 @@ +import { DataTypes, Sequelize } from 'sequelize'; +import { BaseModel } from './BaseModel'; +import { NEVER_USED } from './__helpers'; + +export interface StatModel { + environment: 'production' | 'development' | 'beta'; + commandsUsed: bigint; +} + +export interface StatModelCreationAttributes { + environment: 'production' | 'development' | 'beta'; + commandsUsed: bigint; +} + +export class Stat extends BaseModel<StatModel, StatModelCreationAttributes> implements StatModel { + /** + * The bot's environment. + */ + public get environment(): 'production' | 'development' | 'beta' { + throw new Error(NEVER_USED); + } + public set environment(_: 'production' | 'development' | 'beta') { + throw new Error(NEVER_USED); + } + + /** + * The number of commands used + */ + public get commandsUsed(): bigint { + throw new Error(NEVER_USED); + } + public set commandsUsed(_: bigint) { + throw new Error(NEVER_USED); + } + + public static initModel(sequelize: Sequelize): void { + Stat.init( + { + environment: { + type: DataTypes.STRING, + primaryKey: true + }, + commandsUsed: { + type: DataTypes.TEXT, + allowNull: false, + get: function (): bigint { + return BigInt(this.getDataValue('commandsUsed') as unknown as string); + }, + set: function (val: bigint) { + return this.setDataValue('commandsUsed', `${val}` as any); + }, + defaultValue: '0' + } + }, + { sequelize } + ); + } +} |