getPermission use cache

This commit is contained in:
Flam3rboy 2021-04-07 15:54:27 +02:00
parent 084c396e8d
commit 25d901e8e1

View File

@ -147,21 +147,21 @@ export async function getPermission(
user_id: string, user_id: string,
guild_id: string, guild_id: string,
channel_id?: string, channel_id?: string,
cache?: { channel?: ChannelDocument | null; member?: MemberDocument | null } cache?: { channel?: ChannelDocument | null; member?: MemberDocument | null; guild?: GuildDocument | null }
) { ) {
var { channel, member } = cache || {}; var { channel, member, guild } = cache || {};
const guild = await GuildModel.findOne({ id: guild_id }, { owner_id: true }).exec(); if (!guild) guild = await GuildModel.findOne({ id: guild_id }, { owner_id: true }).exec();
if (!guild) throw new Error("Guild not found"); if (!guild) throw new Error("Guild not found");
if (guild.owner_id === user_id) return new Permissions(Permissions.FLAGS.ADMINISTRATOR); if (guild.owner_id === user_id) return new Permissions(Permissions.FLAGS.ADMINISTRATOR);
member = await MemberModel.findOne({ guild_id, id: user_id }, "roles").exec(); if (!member) member = await MemberModel.findOne({ guild_id, id: user_id }, "roles").exec();
if (!member) throw new Error("Member not found"); if (!member) throw new Error("Member not found");
var roles = await RoleModel.find({ guild_id, id: { $in: member.roles } }) var roles = await RoleModel.find({ guild_id, id: { $in: member.roles } })
.lean() .lean()
.exec(); .exec();
if (channel_id) { if (channel_id && !channel) {
channel = await ChannelModel.findOne({ id: channel_id }, "permission_overwrites").exec(); channel = await ChannelModel.findOne({ id: channel_id }, "permission_overwrites").exec();
} }