import db, { tickets, eq, getActor, getActorByDiscordId } from "@stealth-developers/db"; export async function hasAccessToTicket(userId: string, ticketId: string) { const [ticket] = await db.select().from(tickets).where(eq(tickets.id, ticketId)).limit(1); if (!ticket) return false; const userPromise = getActorByDiscordId(userId, ticket.guildId); const subjectPromise = getActor(ticket.subject); const openedByPromise = ticket.subject === ticket.openedBy ? null : getActor(ticket.openedBy); const [user, subject, openedByResult] = await Promise.all([ userPromise, subjectPromise, openedByPromise, ]); const openedBy = ticket.subject === ticket.openedBy ? subject : openedByResult; if (!user) return false; if (user.moderator) return true; if (!subject || !openedBy) return false; if (user.id === subject.id || user.id === openedBy.id) return true; }