Create effects concept #402
4 changed files with 80 additions and 0 deletions
|
@ -0,0 +1 @@
|
||||||
|
DROP TABLE `user_effect`;
|
|
@ -0,0 +1,10 @@
|
||||||
|
CREATE TABLE `user_effect` (
|
||||||
|
`Id` varchar(255) NOT NULL,
|
||||||
|
`WhenCreated` datetime NOT NULL,
|
||||||
|
`WhenUpdated` datetime NOT NULL,
|
||||||
|
`Name` varchar(255) NOT NULL,
|
||||||
|
`UserId` varchar(255) NOT NULL,
|
||||||
|
`Unused` int NOT NULL DEFAULT 0,
|
||||||
|
`WhenExpires` datetime NULL,
|
||||||
|
PRIMARY KEY (`Id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
51
src/database/entities/app/UserEffect.ts
Normal file
51
src/database/entities/app/UserEffect.ts
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
import {Column, Entity} from "typeorm";
|
||||||
|
import AppBaseEntity from "../../../contracts/AppBaseEntity";
|
||||||
|
|
||||||
|
@Entity()
|
||||||
|
export default class UserEffect extends AppBaseEntity {
|
||||||
|
constructor(name: string, userId: string, unused: number, WhenExpires?: Date) {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.Name = name;
|
||||||
|
this.UserId = userId;
|
||||||
|
this.Unused = unused;
|
||||||
|
this.WhenExpires = WhenExpires;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
Name: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
UserId: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
Unused: number;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
WhenExpires?: Date;
|
||||||
|
|
||||||
|
public AddUnused(amount: number) {
|
||||||
|
this.Unused += amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UseEffect(whenExpires: Date): boolean {
|
||||||
|
if (this.Unused == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.Unused -= 1;
|
||||||
|
this.WhenExpires = whenExpires;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IsEffectActive(): boolean {
|
||||||
|
const now = new Date();
|
||||||
|
|
||||||
|
if (this.WhenExpires && now < this.WhenExpires) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||||
|
import MigrationHelper from "../../../../helpers/MigrationHelper";
|
||||||
|
|
||||||
|
export class CreateUserEffect1729962056556 implements MigrationInterface {
|
||||||
|
|
||||||
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
MigrationHelper.Up("1729962056556-createUserEffect", "0.9", [
|
||||||
|
"01-table-userEffect",
|
||||||
|
], queryRunner);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
MigrationHelper.Down("1729962056556-createUserEffect", "0.9", [
|
||||||
|
"01-table-userEffect",
|
||||||
|
], queryRunner);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue