From 38f488528ba96e8445f29c9fe24131930f03a697 Mon Sep 17 00:00:00 2001 From: IRONM00N <64110067+IRONM00N@users.noreply.github.com> Date: Wed, 27 Oct 2021 19:26:52 -0400 Subject: use declaration merging for models and clean them up --- src/lib/models/Level.ts | 70 +++++++++++++++---------------------------------- 1 file changed, 21 insertions(+), 49 deletions(-) (limited to 'src/lib/models/Level.ts') diff --git a/src/lib/models/Level.ts b/src/lib/models/Level.ts index 0960d4f..7f418fd 100644 --- a/src/lib/models/Level.ts +++ b/src/lib/models/Level.ts @@ -1,7 +1,6 @@ import { Snowflake } from 'discord.js'; import { DataTypes, Sequelize } from 'sequelize'; import { BaseModel } from './BaseModel'; -import { NEVER_USED } from './__helpers'; export interface LevelModel { user: Snowflake; @@ -15,40 +14,20 @@ export interface LevelModelCreationAttributes { xp?: number; } -export class Level extends BaseModel { - /** - * The user's id. - */ - public get user(): Snowflake { - throw new Error(NEVER_USED); - } - public set user(_: Snowflake) { - throw new Error(NEVER_USED); - } +// declaration merging so that the fields don't override Sequelize's getters +export interface Level { + /** The user's id. */ + user: Snowflake; - /** - * The guild where the user is gaining xp. - */ - public get guild(): Snowflake { - throw new Error(NEVER_USED); - } - public set guild(_: Snowflake) { - throw new Error(NEVER_USED); - } + /** The guild where the user is gaining xp. */ + guild: Snowflake; - /** - * The user's xp. - */ - public get xp(): number { - throw new Error(NEVER_USED); - } - public set xp(_: number) { - throw new Error(NEVER_USED); - } + /**The user's xp.*/ + xp: number; +} - /** - * The user's level. - */ +export class Level extends BaseModel implements LevelModel { + /** The user's level. */ public get level(): number { return Level.convertXpToLevel(this.xp); } @@ -56,24 +35,15 @@ export class Level extends BaseModel { public static initModel(sequelize: Sequelize): void { Level.init( { - user: { - type: DataTypes.STRING, - allowNull: false - }, - guild: { - type: DataTypes.STRING, - allowNull: false - }, - xp: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: 0 - } + user: { type: DataTypes.STRING, allowNull: false }, + guild: { type: DataTypes.STRING, allowNull: false }, + xp: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 0 } }, - { sequelize: sequelize } + { sequelize } ); } - static convertXpToLevel(xp: number): number { + + public static convertXpToLevel(xp: number): number { let i = 1; let lvl: number; // eslint-disable-next-line no-constant-condition @@ -88,14 +58,16 @@ export class Level extends BaseModel { } return lvl - 1; // I have to do this don't question it ok } - static convertLevelToXp(level: number): number { + + public static convertLevelToXp(level: number): number { let xp = 0; for (let i = 0; i < level; i++) { xp += 100 * i + 75; } return xp; } - static genRandomizedXp(): number { + + public static genRandomizedXp(): number { return Math.floor(Math.random() * (40 - 15 + 1)) + 15; } } -- cgit