import { BaseRepository } from "./BaseRepository"; import { getRepository, Repository } from "typeorm"; import { Starboard } from "./entities/Starboard"; import { StarboardMessage } from "./entities/StarboardMessage"; export class GuildStarboards extends BaseRepository { private starboards: Repository; private starboardMessages: Repository; constructor(guildId) { super(guildId); this.starboards = getRepository(Starboard); this.starboardMessages = getRepository(StarboardMessage); } getStarboardByChannelId(channelId): Promise { return this.starboards.findOne({ where: { guild_id: this.guildId, channel_id: channelId } }); } getStarboardsByEmoji(emoji): Promise { return this.starboards.find({ where: { guild_id: this.guildId, emoji } }); } getStarboardMessageByStarboardIdAndMessageId(starboardId, messageId): Promise { return this.starboardMessages.findOne({ relations: this.getRelations(), where: { starboard_id: starboardId, message_id: messageId } }); } getStarboardMessagesByMessageId(id): Promise { return this.starboardMessages.find({ relations: this.getRelations(), where: { message_id: id } }); } async createStarboardMessage(starboardId, messageId, starboardMessageId): Promise { await this.starboardMessages.insert({ starboard_id: starboardId, message_id: messageId, starboard_message_id: starboardMessageId }); } async deleteStarboardMessage(starboardId, messageId): Promise { await this.starboardMessages.delete({ starboard_id: starboardId, message_id: messageId }); } async create(channelId: string, channelWhitelist: string[], emoji: string, reactionsRequired: number): Promise { await this.starboards.insert({ guild_id: this.guildId, channel_id: channelId, channel_whitelist: channelWhitelist ? channelWhitelist.join(",") : null, emoji, reactions_required: reactionsRequired }); } async delete(channelId: string): Promise { await this.starboards.delete({ guild_id: this.guildId, channel_id: channelId }); } }