Compare commits
3 commits
9fce79579b
...
0e1bc43ac4
Author | SHA1 | Date | |
---|---|---|---|
0e1bc43ac4 | |||
78fcdeeca5 | |||
96bbd3b28a |
3 changed files with 52 additions and 14 deletions
|
@ -14,5 +14,17 @@ export default class Effects extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async execute(interaction: CommandInteraction) {
|
public override async execute(interaction: CommandInteraction) {
|
||||||
|
if (!interaction.isChatInputCommand()) return;
|
||||||
|
|
||||||
|
const subcommand = interaction.options.getSubcommand();
|
||||||
|
|
||||||
|
switch (subcommand) {
|
||||||
|
case "list":
|
||||||
|
await this.List(interaction);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async List(interaction: CommandInteraction) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,18 +58,17 @@ export default class UserEffect extends AppBaseEntity {
|
||||||
return single;
|
return single;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async FetchAllByUserIdPaginated(userId: string, page: number = 0): Promise<UserEffect[]> {
|
public static async FetchAllByUserIdPaginated(userId: string, page: number = 0, itemsPerPage: number = 10): Promise<[UserEffect[], number]> {
|
||||||
const itemsPerPage = 10;
|
|
||||||
|
|
||||||
const repository = AppDataSource.getRepository(UserEffect);
|
const repository = AppDataSource.getRepository(UserEffect);
|
||||||
|
|
||||||
const all = await repository.find({
|
const query = await repository.createQueryBuilder("effect")
|
||||||
where: { UserId: userId },
|
.where("effect.UserId = :userId", { userId })
|
||||||
order: { Name: "ASC" },
|
.where("effect.Unused > 0")
|
||||||
skip: page * itemsPerPage,
|
.orderBy("effect.Name", "ASC")
|
||||||
take: itemsPerPage,
|
.skip(page * itemsPerPage)
|
||||||
});
|
.take(itemsPerPage)
|
||||||
|
.getManyAndCount();
|
||||||
|
|
||||||
return all;
|
return query;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import {EmbedBuilder} from "discord.js";
|
import {ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder} from "discord.js";
|
||||||
import UserEffect from "../database/entities/app/UserEffect";
|
import UserEffect from "../database/entities/app/UserEffect";
|
||||||
import EmbedColours from "../constants/EmbedColours";
|
import EmbedColours from "../constants/EmbedColours";
|
||||||
|
|
||||||
|
@ -49,8 +49,18 @@ export default class EffectHelper {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async GenerateEffectEmbed(userId: string, page: number): Promise<EmbedBuilder> {
|
public static async GenerateEffectEmbed(userId: string, page: number): Promise<{
|
||||||
const effects = await UserEffect.FetchAllByUserIdPaginated(userId, page - 1);
|
embed: EmbedBuilder,
|
||||||
|
row: ActionRowBuilder<ButtonBuilder>,
|
||||||
|
}> {
|
||||||
|
const itemsPerPage = 10;
|
||||||
|
|
||||||
|
const query = await UserEffect.FetchAllByUserIdPaginated(userId, page - 1, itemsPerPage);
|
||||||
|
|
||||||
|
const effects = query[0];
|
||||||
|
const count = query[1];
|
||||||
|
|
||||||
|
const isLastPage = Math.ceil(count / itemsPerPage) - 1 == page;
|
||||||
|
|
||||||
let description = "*none*";
|
let description = "*none*";
|
||||||
|
|
||||||
|
@ -63,6 +73,23 @@ export default class EffectHelper {
|
||||||
.setDescription(description)
|
.setDescription(description)
|
||||||
.setColor(EmbedColours.Ok);
|
.setColor(EmbedColours.Ok);
|
||||||
|
|
||||||
return embed;
|
const row = new ActionRowBuilder<ButtonBuilder>()
|
||||||
|
.addComponents(
|
||||||
|
new ButtonBuilder()
|
||||||
|
.setCustomId(`effects list ${page - 1}`)
|
||||||
|
.setLabel("Previous")
|
||||||
|
.setStyle(ButtonStyle.Primary)
|
||||||
|
.setDisabled(page == 0),
|
||||||
|
new ButtonBuilder()
|
||||||
|
.setCustomId(`effects list ${page + 1}`)
|
||||||
|
.setLabel("Next")
|
||||||
|
.setStyle(ButtonStyle.Primary)
|
||||||
|
.setDisabled(isLastPage),
|
||||||
|
);
|
||||||
|
|
||||||
|
return {
|
||||||
|
embed,
|
||||||
|
row,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue