Add list moons command #449
3 changed files with 7 additions and 10 deletions
|
@ -1,20 +1,21 @@
|
||||||
import {ActionRowBuilder, ButtonBuilder, ButtonStyle, CommandInteraction, EmbedBuilder} from "discord.js";
|
import {ActionRowBuilder, ButtonBuilder, ButtonStyle, CommandInteraction, EmbedBuilder} from "discord.js";
|
||||||
import Moon from "../../../database/entities/Moon";
|
import Moon from "../../../database/entities/Moon";
|
||||||
import EmbedColours from "../../../constants/EmbedColours";
|
import EmbedColours from "../../../constants/EmbedColours";
|
||||||
import MoonConstants from "../../../constants/MoonConstants";
|
|
||||||
|
|
||||||
export default async function ListMoons(interaction: CommandInteraction) {
|
export default async function ListMoons(interaction: CommandInteraction) {
|
||||||
const user = interaction.options.get("user")?.user ?? interaction.user;
|
const user = interaction.options.get("user")?.user ?? interaction.user;
|
||||||
const page = interaction.options.get("page")?.value as number ?? 0;
|
const page = interaction.options.get("page")?.value as number ?? 0;
|
||||||
|
|
||||||
const moons = await Moon.FetchPaginatedMoonsByUserId(user.id, page);
|
const pageLength = 10;
|
||||||
|
|
||||||
|
const moons = await Moon.FetchPaginatedMoonsByUserId(user.id, pageLength, page);
|
||||||
|
|
||||||
if (!moons || moons[0].length == 0) {
|
if (!moons || moons[0].length == 0) {
|
||||||
await interaction.reply(`${user.username} does not have any moons or page is invalid.`);
|
await interaction.reply(`${user.username} does not have any moons or page is invalid.`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const totalPages = Math.ceil(moons[1] / MoonConstants.ListPageLength);
|
const totalPages = Math.ceil(moons[1] / pageLength);
|
||||||
|
|
||||||
const description = moons[0].flatMap(x => `${x.MoonNumber}. ${x.Description.slice(0, 15)}`);
|
const description = moons[0].flatMap(x => `${x.MoonNumber}. ${x.Description.slice(0, 15)}`);
|
||||||
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
export default class MoonConstants {
|
|
||||||
public static readonly ListPageLength = 10;
|
|
||||||
}
|
|
|
@ -1,7 +1,6 @@
|
||||||
import { Column, Entity } from "typeorm";
|
import { Column, Entity } from "typeorm";
|
||||||
import BaseEntity from "../../contracts/BaseEntity";
|
import BaseEntity from "../../contracts/BaseEntity";
|
||||||
import AppDataSource from "../dataSources/appDataSource";
|
import AppDataSource from "../dataSources/appDataSource";
|
||||||
import MoonConstants from "../../constants/MoonConstants";
|
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export default class Moon extends BaseEntity {
|
export default class Moon extends BaseEntity {
|
||||||
|
@ -30,8 +29,8 @@ export default class Moon extends BaseEntity {
|
||||||
return all;
|
return all;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async FetchPaginatedMoonsByUserId(userId: string, page: number): Promise<[ Moon[], number ]> {
|
public static async FetchPaginatedMoonsByUserId(userId: string, pageLength: number, page: number): Promise<[ Moon[], number ]> {
|
||||||
const rangeStart = page * MoonConstants.ListPageLength;
|
const rangeStart = page * pageLength;
|
||||||
|
|
||||||
const repository = AppDataSource.getRepository(Moon);
|
const repository = AppDataSource.getRepository(Moon);
|
||||||
|
|
||||||
|
@ -39,7 +38,7 @@ export default class Moon extends BaseEntity {
|
||||||
where: { UserId: userId },
|
where: { UserId: userId },
|
||||||
order: { MoonNumber: "ASC" },
|
order: { MoonNumber: "ASC" },
|
||||||
skip: rangeStart,
|
skip: rangeStart,
|
||||||
take: MoonConstants.ListPageLength,
|
take: pageLength,
|
||||||
});
|
});
|
||||||
|
|
||||||
return moons;
|
return moons;
|
||||||
|
|
Loading…
Reference in a new issue