vylbot-app/src/database/entities/304276391837302787/Moon.ts
Ethan Lane 36d6cf91cf
All checks were successful
Deploy To Stage / build (push) Successful in 8s
Deploy To Stage / deploy (push) Successful in 17s
Add ability to add a moon to your count (#477)
- Add the ability to add moons to your count
- Moved the moon entity to its server id folder to be more consistent

#196

Reviewed-on: #477
Reviewed-by: VylpesTester <tester@vylpes.com>
Co-authored-by: Ethan Lane <ethan@vylpes.com>
Co-committed-by: Ethan Lane <ethan@vylpes.com>
2024-09-21 16:12:19 +01:00

57 lines
1.6 KiB
TypeScript

import { Column, Entity, IsNull } from "typeorm";
import BaseEntity from "../../../contracts/BaseEntity";
import AppDataSource from "../../dataSources/appDataSource";
@Entity()
export default class Moon extends BaseEntity {
constructor(moonNumber: number, description: string, userId: string) {
super();
this.MoonNumber = moonNumber;
this.Description = description;
this.UserId = userId;
}
@Column()
MoonNumber: number;
@Column()
Description: string;
@Column({ nullable: true })
WhenArchived?: Date;
@Column()
UserId: string;
public static async FetchMoonsByUserId(userId: string): Promise<Moon[] | null> {
const repository = AppDataSource.getRepository(Moon);
const all = await repository.find({ where: { UserId: userId } });
return all;
}
public static async FetchPaginatedMoonsByUserId(userId: string, pageLength: number, page: number): Promise<[ Moon[], number ]> {
const rangeStart = page * pageLength;
const repository = AppDataSource.getRepository(Moon);
const moons = await repository.findAndCount({
where: { UserId: userId, WhenArchived: IsNull() },
order: { MoonNumber: "ASC" },
skip: rangeStart,
take: pageLength,
});
return moons;
}
public static async FetchMoonCountByUserId(userId: string): Promise<number> {
const repository = AppDataSource.getRepository(Moon);
const count = await repository.count({ where: { UserId: userId } });
return count;
}
}