import { Guild } from '@prisma/client'; import { Snowflake } from 'discord-api-types/v10'; import Prisma from './Prisma'; class Cache { private cache: any; constructor() { this.cache = { Guilds: {} }; } public async updateGuildsCache() { const Guilds = await Prisma.client.guild.findMany(); for (let Guild of Guilds) { this.setGuildData(Guild.id, Guild); } } public async updateGuildCache(guildID: Snowflake) { const DBGuild = await Prisma.client.guild.findFirst({ where: { id: guildID } }); if (DBGuild === null) return; this.setGuildData(guildID, DBGuild); } public setGuildData(id: string, data: Object): void { this.cache.Guilds[id] = data; } public async getGuild(id: string): Promise { if (typeof this.cache.Guilds[id] !== 'undefined') return this.cache.Guilds[id]; const Guild = await Prisma.client.guild.findFirst({ where: { id: id } }); if (Guild === null) return undefined; this.setGuildData(Guild.id, Guild); return this.cache.Guilds[id]; } public getGuilds(): void { return this.cache.Guilds; } } export default new Cache();