From 81d69f983983ac71dbdbd5f13e2f2d8ddc35dced Mon Sep 17 00:00:00 2001 From: IRONM00N <64110067+IRONM00N@users.noreply.github.com> Date: Sun, 5 Sep 2021 13:45:44 -0400 Subject: cleaning up and some imporvements to the stats command --- src/lib/models/Stat.ts | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/lib/models/Stat.ts (limited to 'src/lib/models/Stat.ts') 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 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 } + ); + } +} -- cgit