diff options
author | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2021-09-05 13:45:44 -0400 |
---|---|---|
committer | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2021-09-05 13:45:44 -0400 |
commit | 81d69f983983ac71dbdbd5f13e2f2d8ddc35dced (patch) | |
tree | 6a06124a6696bb4036607d179972aa889b7b3769 /src/lib/models/Stat.ts | |
parent | 93e8fce44ec1dd3294b1c785d93d3f8b00ee4cef (diff) | |
download | tanzanite-81d69f983983ac71dbdbd5f13e2f2d8ddc35dced.tar.gz tanzanite-81d69f983983ac71dbdbd5f13e2f2d8ddc35dced.tar.bz2 tanzanite-81d69f983983ac71dbdbd5f13e2f2d8ddc35dced.zip |
cleaning up and some imporvements to the stats command
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 } + ); + } +} |