diff --git a/src/commands-contextmenu/updateuser.ts b/src/commands-contextmenu/updateuser.ts index c4b79f1..55ebac4 100644 --- a/src/commands-contextmenu/updateuser.ts +++ b/src/commands-contextmenu/updateuser.ts @@ -1,5 +1,6 @@ import { ApplicationCommandType, ContextMenuCommandBuilder, InteractionContextType, PermissionFlagsBits, userMention } from "discord.js" import db from "src/drizzle/db.js" +import { getVerify } from "src/drizzle/functions" import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js" import { waitingListRole } from "~/config/roles.js" import { IContextMenu } from "~/interfaces" @@ -24,9 +25,7 @@ export default { const targetId = interaction.targetId const user = await interaction.guild!.members.fetch(targetId) const usermentioned = userMention(user.user.id) - const verifyData = await db.query.verifies.findFirst({ - where: ({ userID }, { eq }) => eq(userID, user.id) - }) + const verifyData = await getVerify({ userID: user.id }) if (!verifyData) { await user.setNickname(`${user.user.username} (X)`, "User used the update command").catch(() => { diff --git a/src/commands/config.ts b/src/commands/config.ts index b772b35..5863163 100644 --- a/src/commands/config.ts +++ b/src/commands/config.ts @@ -1,6 +1,7 @@ import { InteractionContextType, PermissionFlagsBits, SlashCommandBuilder } from "discord.js" import { eq } from "drizzle-orm" import db from "src/drizzle/db.js" +import { addSetting, getSetting, updateSetting } from "src/drizzle/functions" import { settings } from "src/drizzle/schema.js" import { embedColor } from "~/config/options.js" import { ICommand } from "~/interfaces" @@ -38,12 +39,10 @@ export default { const setting = interaction.options.getString("setting")! const value = interaction.options.getString("value")! - const settingsData = await db.query.settings.findFirst({ - where: ({ name }, { eq }) => eq(name, setting) - }) + const settingsData = await getSetting({ name: setting }) if (!settingsData) { - await db.insert(settings).values({ + await addSetting({ name: setting, value: value }) @@ -55,9 +54,9 @@ export default { }] }) } else { - await db.update(settings).set({ - value: value - }).where(eq(settings.name, setting)) + await updateSetting({ + value + }) await interaction.editReply({ embeds: [{ diff --git a/src/commands/find.ts b/src/commands/find.ts index 7749530..c697009 100644 --- a/src/commands/find.ts +++ b/src/commands/find.ts @@ -1,5 +1,6 @@ import { InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js" import db from "src/drizzle/db.js" +import { getVerify } from "src/drizzle/functions" import { devMessage, embedColor } from "~/config/options.js" import { ICommand } from "~/interfaces" import { getHeadURL, getIGN, getUUID } from "~/utils/Hypixel.js" @@ -37,9 +38,7 @@ export default { return } - const verifyData = await db.query.verifies.findFirst({ - where: ({ uuid: uuidfromdb }, { eq }) => eq(uuidfromdb, uuid) - }) + const verifyData = await getVerify({ uuid }) if (!verifyData) { await interaction.editReply({ embeds: [{ diff --git a/src/commands/forceunverify.ts b/src/commands/forceunverify.ts index eae0c96..b6e4f78 100644 --- a/src/commands/forceunverify.ts +++ b/src/commands/forceunverify.ts @@ -1,6 +1,7 @@ import { GuildMember, InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js" import { eq } from "drizzle-orm" import db from "src/drizzle/db.js" +import { getVerify, removeVerify } from "src/drizzle/functions" import { verifies } from "src/drizzle/schema.js" import { devMessage, embedColor } from "~/config/options.js" import { ICommand } from "~/interfaces" @@ -28,9 +29,7 @@ export default { async execute({ interaction }) { const member = interaction.options.getMember("user") as GuildMember - const verifiedUser = await db.query.verifies.findFirst({ - where: ({ userID }, { eq }) => eq(userID, member.user.id) - }) + const verifiedUser = await getVerify({ userID: member.user.id }) const mod = interaction.user if (!verifiedUser) { @@ -45,7 +44,7 @@ export default { const uuid = verifiedUser.uuid const ign = await getIGN(uuid) - await db.delete(verifies).where(eq(verifies.userID, member.user.id)) + await removeVerify({ userID: member.user.id }) await member.roles.remove( roleManage("all").rolesToRemove, "User force unverified by " + interaction.user.username diff --git a/src/commands/forceupdate.ts b/src/commands/forceupdate.ts index 9ba92cd..5b43b94 100644 --- a/src/commands/forceupdate.ts +++ b/src/commands/forceupdate.ts @@ -1,5 +1,6 @@ import { GuildMember, InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js" import db from "src/drizzle/db.js" +import { getVerify } from "src/drizzle/functions" import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js" import { waitingListRole } from "~/config/roles.js" import { ICommand } from "~/interfaces" @@ -29,9 +30,7 @@ export default { const user = interaction.options.getMember("user") as GuildMember const usermentioned = userMention(user.user.id) - const verifyData = await db.query.verifies.findFirst({ - where: ({ userID }, { eq }) => eq(userID, user.user.id) - }) + const verifyData = await getVerify({ userID: user.user.id }) if (!verifyData) { await user.setNickname(`${user.user.username} (X)`, "User used the update command").catch(() => { diff --git a/src/commands/forceverify.ts b/src/commands/forceverify.ts index dc2952a..90e325c 100644 --- a/src/commands/forceverify.ts +++ b/src/commands/forceverify.ts @@ -1,5 +1,6 @@ import { GuildMember, InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js" import db from "src/drizzle/db.js" +import { addVerify, getVerify } from "src/drizzle/functions" import { verifies } from "src/drizzle/schema.js" import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js" import { ICommand } from "~/interfaces" @@ -38,9 +39,7 @@ export default { const ign = interaction.options.getString("ign")! const mod = interaction.user - const verifyData = await db.query.verifies.findFirst({ - where: ({ userID }, { eq }) => eq(userID, user.user.id) - }) + const verifyData = await getVerify({ userID: user.id }) if (verifyData) { interaction.editReply("That user is already verified.") return @@ -141,7 +140,7 @@ export default { // Do nothing }) - await db.insert(verifies).values({ + await addVerify({ userID: user.user.id, uuid: uuid }) diff --git a/src/commands/remove.ts b/src/commands/remove.ts index f22e93d..d4eb223 100644 --- a/src/commands/remove.ts +++ b/src/commands/remove.ts @@ -1,6 +1,7 @@ import { GuildMember, InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js" import { eq } from "drizzle-orm" import db from "src/drizzle/db.js" +import { getWaitingList, removeWaitingList } from "src/drizzle/functions" import { waitingLists } from "src/drizzle/schema.js" import { devMessage, embedColor } from "~/config/options.js" import { waitingListRole } from "~/config/roles.js" @@ -36,9 +37,7 @@ export default { const member = interaction.options.getMember("user") as GuildMember const reason = interaction.options.getString("reason") ?? "No reason provided." const mod = interaction.user! - const waiting = await db.query.waitingLists.findFirst({ - where: ({ userID }, { eq }) => eq(userID, member.user.id) - }) + const waiting = await getWaitingList({ userID: member.user.id }) if (!waiting) { await interaction.editReply({ @@ -50,7 +49,7 @@ export default { return } - await db.delete(waitingLists).where(eq(waitingLists.userID, member.user.id)) + await removeWaitingList({ userID: member.user.id }) await member.roles.remove(waitingListRole, "Removed from waiting list.") await logToChannel("mod", { diff --git a/src/commands/staff/removeguildroles.ts b/src/commands/staff/removeguildroles.ts index b99e59d..9fdf395 100644 --- a/src/commands/staff/removeguildroles.ts +++ b/src/commands/staff/removeguildroles.ts @@ -1,5 +1,6 @@ import { ChatInputCommandInteraction, GuildMember } from "discord.js" import db from "src/drizzle/db.js" +import { getVerifies } from "src/drizzle/functions" import { embedColor, hypixelGuildID } from "~/config/options.js" import { IGuildData } from "~/interfaces" import env from "~/utils/Env.js" @@ -35,7 +36,7 @@ export default async function removeGuildRoles(interaction: ChatInputCommandInte const hypixelGuildMembers = guildData.members.map(gmember => gmember.uuid) - const verifiedUsers = await db.query.verifies.findMany() + const verifiedUsers = await getVerifies() for (const gmember of guildMembers) { const gmemberuuid = verifiedUsers.find(user => user.userID === gmember.id)?.uuid diff --git a/src/commands/staff/updateall.ts b/src/commands/staff/updateall.ts index 308cfe9..a07ce0e 100644 --- a/src/commands/staff/updateall.ts +++ b/src/commands/staff/updateall.ts @@ -1,5 +1,6 @@ import { ChannelType, ChatInputCommandInteraction, GuildMember } from "discord.js" import db from "src/drizzle/db.js" +import { getVerifies } from "src/drizzle/functions" import { embedColor, hypixelGuildID } from "~/config/options.js" import { IGuildData } from "~/interfaces" import env from "~/utils/Env.js" @@ -53,7 +54,7 @@ export default async function updateAll(interaction: ChatInputCommandInteraction }) const guildMemberIDs = hypixelGuildMembers.map(gmember => gmember.uuid) - const verifiedUsers = await db.query.verifies.findMany() + const verifiedUsers = await getVerifies() await interaction.editReply({ embeds: [{ diff --git a/src/commands/update.ts b/src/commands/update.ts index 61e5653..bf94da7 100644 --- a/src/commands/update.ts +++ b/src/commands/update.ts @@ -1,5 +1,6 @@ import { GuildMember, InteractionContextType, SlashCommandBuilder } from "discord.js" import db from "src/drizzle/db.js" +import { getVerify } from "src/drizzle/functions" import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js" import { waitingListRole } from "~/config/roles.js" import { ICommand } from "~/interfaces" @@ -21,9 +22,7 @@ export default { await interaction.deferReply() const user = interaction.member as GuildMember - const verifyData = await db.query.verifies.findFirst({ - where: ({ userID }, { eq }) => eq(userID, user.user.id) - }) + const verifyData = await getVerify({ userID: user.id }) if (!verifyData) { await user.setNickname(`${user.user.username} (X)`, "User used the update command").catch(() => { diff --git a/src/commands/verify.ts b/src/commands/verify.ts index 3b9b8f9..6fe0411 100644 --- a/src/commands/verify.ts +++ b/src/commands/verify.ts @@ -1,5 +1,6 @@ import { GuildMember, InteractionContextType, SlashCommandBuilder } from "discord.js" import db from "src/drizzle/db.js" +import { addVerify, getVerify } from "src/drizzle/functions" import { verifies } from "src/drizzle/schema.js" import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js" import { ICommand } from "~/interfaces" @@ -33,9 +34,7 @@ export default { const user = interaction.member! as GuildMember const ign = interaction.options.getString("ign")! - const verifyData = await db.query.verifies.findFirst({ - where: ({ userID }, { eq }) => eq(userID, user.id) - }) + const verifyData = await getVerify({ userID: user.id }) if (verifyData) { interaction.editReply("You are already verified.\n" + "Try running /update to update your roles.") return @@ -166,7 +165,7 @@ export default { // Do nothing }) - await db.insert(verifies).values({ + await addVerify({ userID: user.id, uuid: uuid }) diff --git a/src/commands/whoami.ts b/src/commands/whoami.ts index 8c32452..52b004d 100644 --- a/src/commands/whoami.ts +++ b/src/commands/whoami.ts @@ -1,5 +1,6 @@ import { InteractionContextType, SlashCommandBuilder, userMention } from "discord.js" import db from "src/drizzle/db.js" +import { getVerify } from "src/drizzle/functions" import { devMessage, embedColor } from "~/config/options.js" import { ICommand } from "~/interfaces" import { getHeadURL, getIGN } from "~/utils/Hypixel.js" @@ -19,9 +20,7 @@ export default { await interaction.deferReply() const user = interaction.user - const verifyData = await db.query.verifies.findFirst({ - where: ({ userID }, { eq }) => eq(userID, user.id) - }) + const verifyData = await getVerify({ userID: user.id }) if (!verifyData) { await interaction.editReply({ diff --git a/src/commands/whois.ts b/src/commands/whois.ts index c81cbb4..15f43d8 100644 --- a/src/commands/whois.ts +++ b/src/commands/whois.ts @@ -1,5 +1,6 @@ import { InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js" import db from "src/drizzle/db.js" +import { getVerify } from "src/drizzle/functions" import { devMessage, embedColor } from "~/config/options.js" import { ICommand } from "~/interfaces" import { getHeadURL, getIGN } from "~/utils/Hypixel.js" @@ -26,9 +27,7 @@ export default { await interaction.deferReply() const user = interaction.options.getUser("user")! - const verifiedUser = await db.query.verifies.findFirst({ - where: ({ userID }, { eq }) => eq(userID, user.id) - }) + const verifiedUser = await getVerify({ userID: user.id }) if (!verifiedUser) { interaction.editReply({ embeds: [{ diff --git a/src/components/buttons/checkstats.ts b/src/components/buttons/checkstats.ts index 5cabfe7..adf9a98 100644 --- a/src/components/buttons/checkstats.ts +++ b/src/components/buttons/checkstats.ts @@ -1,4 +1,5 @@ import db from "src/drizzle/db.js" +import { getGuildApp } from "src/drizzle/functions" import { devMessage, embedColor } from "~/config/options.js" import { bwfkdr, bwstars, bwwins, duelswins, duelswlr, swkdr, swstars } from "~/config/reqs.js" import { IButton } from "~/interfaces" @@ -14,9 +15,7 @@ export default { const message = interaction.message const embed = message.embeds[0] const applicantId = embed.footer!.text.split(" ")[1] - const guildappdata = await db.query.guildApps.findFirst({ - where: ({ userID }, { eq }) => eq(userID, applicantId) - }) + const guildappdata = await getGuildApp({ userID: applicantId }) const uuid = guildappdata!.uuid const player = await getPlayer(uuid) diff --git a/src/components/buttons/guildapplicationaccept.ts b/src/components/buttons/guildapplicationaccept.ts index 6af5d5b..53d0b5d 100644 --- a/src/components/buttons/guildapplicationaccept.ts +++ b/src/components/buttons/guildapplicationaccept.ts @@ -1,6 +1,8 @@ import { ActionRowBuilder, ButtonBuilder, ButtonStyle, TextChannel } from "discord.js" import { eq } from "drizzle-orm" import db from "src/drizzle/db.js" +import { getGuildApp, removeVerify } from "src/drizzle/functions" +import { addWaitingList, getWaitingLists, removeWaitingList } from "src/drizzle/functions" import { guildApps, waitingLists } from "src/drizzle/schema.js" import { embedColor, hypixelGuildID, waitingListChannel, waitingListMessage } from "~/config/options.js" import { waitingListRole } from "~/config/roles.js" @@ -54,20 +56,18 @@ export default { }] }) - const applicantEntry = await db.query.guildApps.findFirst({ - where: ({ userID }, { eq }) => eq(userID, applicantId) - }) + const applicantEntry = await getGuildApp({ userID: applicantId }) const applicantUUID = applicantEntry!.uuid const time = Date.now() - await db.insert(waitingLists).values({ + await addWaitingList({ userID: applicantId, uuid: applicantUUID, timestamp: time }) await applicant.roles.add(waitingListRole) - await db.delete(guildApps).where(eq(guildApps.userID, applicantId)) + await removeVerify({ userID: applicantId }) await interaction.editReply({ embeds: [{ @@ -90,14 +90,14 @@ export default { const wlmessage = await channel!.messages.fetch(waitingListMessage) const wlembed = wlmessage.embeds[0] - const accepted = await db.query.waitingLists.findMany() + const accepted = await getWaitingLists() for (let i = 0; i < accepted.length; i++) { const uuid = accepted[i].uuid const guild = await getGuild(uuid) if (guild && guild._id === hypixelGuildID) { - await db.delete(waitingLists).where(eq(waitingLists.uuid, uuid)) + await removeWaitingList({ uuid }) continue } } diff --git a/src/components/buttons/guildapply.ts b/src/components/buttons/guildapply.ts index 6b949c7..eb942e5 100644 --- a/src/components/buttons/guildapply.ts +++ b/src/components/buttons/guildapply.ts @@ -1,5 +1,6 @@ import { ActionRowBuilder, ButtonBuilder, ButtonStyle, GuildMember, TextChannel } from "discord.js" import db from "src/drizzle/db.js" +import { addGuildApp, getGuildApp } from "src/drizzle/functions" import { guildApps } from "src/drizzle/schema.js" import { ignM, largeM, smallM } from "~/config/limitmessages.js" import { applicationsChannel, embedColor } from "~/config/options.js" @@ -31,9 +32,7 @@ export default { return } - const application = await db.query.guildApps.findFirst({ - where: ({ userID }, { eq }) => eq(userID, user.user.id) - }) + const application = await getGuildApp({ userID: user.user.id }) if (application) { await interaction.editReply("You already have an application in progress.") @@ -251,7 +250,7 @@ export default { }] }) - await db.insert(guildApps).values({ + await addGuildApp({ userID: user.user.id, uuid: uuid }) diff --git a/src/components/buttons/staffapplicationaccept.ts b/src/components/buttons/staffapplicationaccept.ts index 260d7f5..6facd20 100644 --- a/src/components/buttons/staffapplicationaccept.ts +++ b/src/components/buttons/staffapplicationaccept.ts @@ -1,6 +1,7 @@ import { ActionRowBuilder, ButtonBuilder, ButtonStyle } from "discord.js" import { eq } from "drizzle-orm" import db from "src/drizzle/db.js" +import { removeStaffApp } from "src/drizzle/functions" import { staffApps } from "src/drizzle/schema.js" import { embedColor } from "~/config/options.js" import { IButton } from "~/interfaces" @@ -45,7 +46,7 @@ export default { ] }) - await db.delete(staffApps).where(eq(staffApps.userID, applicantId)) + await removeStaffApp({ userID: applicantId }) await interaction.editReply({ embeds: [{ diff --git a/src/components/buttons/staffapply.ts b/src/components/buttons/staffapply.ts index 121a69d..164b788 100644 --- a/src/components/buttons/staffapply.ts +++ b/src/components/buttons/staffapply.ts @@ -1,5 +1,6 @@ import { ActionRowBuilder, ButtonBuilder, ButtonStyle, GuildMember, TextChannel } from "discord.js" import db from "src/drizzle/db.js" +import { addStaffApp, getSetting, getStaffApp } from "src/drizzle/functions" import { staffApps } from "src/drizzle/schema.js" import { ignM, largeM } from "~/config/limitmessages.js" import { embedColor, staffApplicationsChannel } from "~/config/options.js" @@ -17,9 +18,7 @@ export default { const user = interaction.member as GuildMember const guild = interaction.guild! const userRoles = user.roles.cache - const setting = await db.query.settings.findFirst({ - where: ({ name }, { eq }) => eq(name, "staffApplications") - }) + const setting = await getSetting({ name: "staffapplications" }) const status = setting?.value || "0" function sq(n: number): string { @@ -50,9 +49,7 @@ export default { return } - const application = await db.query.staffApps.findFirst({ - where: ({ userID }, { eq }) => eq(userID, user.user.id) - }) + const application = await getStaffApp({ userID: user.user.id }) if (application) { await interaction.editReply("You already have an application in progress.") @@ -225,7 +222,7 @@ export default { }] }) - await db.insert(staffApps).values({ + await addStaffApp({ userID: user.user.id, uuid: uuid }) diff --git a/src/components/buttons/waitingListUpdate.ts b/src/components/buttons/waitingListUpdate.ts index 1b208b5..f431601 100644 --- a/src/components/buttons/waitingListUpdate.ts +++ b/src/components/buttons/waitingListUpdate.ts @@ -1,5 +1,6 @@ import { eq } from "drizzle-orm" import db from "src/drizzle/db.js" +import { getWaitingLists, removeWaitingList } from "src/drizzle/functions" import { waitingLists } from "src/drizzle/schema.js" import { hypixelGuildID } from "~/config/options.js" import { IButton } from "~/interfaces" @@ -15,14 +16,14 @@ export default { const user = interaction.user const message = interaction.message const embed = message.embeds[0] - const accepted = await db.query.waitingLists.findMany() + const accepted = await getWaitingLists() for (let i = 0; i < accepted.length; i++) { const uuid = accepted[i].uuid const guild = await getGuild(uuid) if (guild && guild._id === hypixelGuildID) { - await db.delete(waitingLists).where(eq(waitingLists.uuid, uuid)) + await removeWaitingList({ uuid }) continue } } diff --git a/src/components/modals/denyreasonbox.ts b/src/components/modals/denyreasonbox.ts index 1d78ee4..895ea93 100644 --- a/src/components/modals/denyreasonbox.ts +++ b/src/components/modals/denyreasonbox.ts @@ -1,6 +1,7 @@ import { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder, GuildMember, Message } from "discord.js" import { eq } from "drizzle-orm" import db from "src/drizzle/db.js" +import { removeGuildApp } from "src/drizzle/functions" import { guildApps } from "src/drizzle/schema.js" import { embedColor } from "~/config/options.js" import { IModal } from "~/interfaces" @@ -83,7 +84,7 @@ export default { responseEmbeds = [responseEmbed] } - await db.delete(guildApps).where(eq(guildApps.userID, applicantId)) + await removeGuildApp({ userID: applicantId }) await interaction.editReply({ embeds: responseEmbeds diff --git a/src/components/modals/staffdenyreasonbox.ts b/src/components/modals/staffdenyreasonbox.ts index e243de1..560bb6d 100644 --- a/src/components/modals/staffdenyreasonbox.ts +++ b/src/components/modals/staffdenyreasonbox.ts @@ -1,6 +1,7 @@ import { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder } from "discord.js" import { eq } from "drizzle-orm" import db from "src/drizzle/db.js" +import { removeStaffApp } from "src/drizzle/functions" import { staffApps } from "src/drizzle/schema.js" import { embedColor } from "~/config/options.js" import { IModal } from "~/interfaces" @@ -45,7 +46,7 @@ export default { await applicant.send({ embeds: [dmMessage] }) - await db.delete(staffApps).where(eq(staffApps.userID, applicantId)) + await removeStaffApp({ userID: applicantId }) await interaction.editReply({ embeds: [{ diff --git a/src/components/modals/verifyModal.ts b/src/components/modals/verifyModal.ts index 10b5743..635d2ce 100644 --- a/src/components/modals/verifyModal.ts +++ b/src/components/modals/verifyModal.ts @@ -1,5 +1,6 @@ import { GuildMember } from "discord.js" import db from "src/drizzle/db.js" +import { addVerify, getVerify } from "src/drizzle/functions" import { verifies } from "src/drizzle/schema.js" import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js" import { IModal } from "~/interfaces" @@ -15,9 +16,7 @@ export default { const user = interaction.member as GuildMember const ign = interaction.fields.fields.get("verifyign")!.value - const verifyData = await db.query.verifies.findFirst({ - where: ({ userID }, { eq }) => eq(userID, user.id) - }) + const verifyData = await getVerify({ userID: user.id }) if (verifyData) { interaction.editReply("You are already verified.\n" + "Try running /update to update your roles.") return @@ -147,7 +146,7 @@ export default { // Do nothing }) - await db.insert(verifies).values({ + await addVerify({ userID: user.id, uuid: uuid }) diff --git a/src/drizzle/functions.ts b/src/drizzle/functions.ts new file mode 100644 index 0000000..5c2f7de --- /dev/null +++ b/src/drizzle/functions.ts @@ -0,0 +1,5 @@ +export * from "./functions/guildApps.js" +export * from "./functions/settings.js" +export * from "./functions/staffApps.js" +export * from "./functions/verifies.js" +export * from "./functions/waitingList.js" diff --git a/src/drizzle/functions/guildApps.ts b/src/drizzle/functions/guildApps.ts new file mode 100644 index 0000000..189ab31 --- /dev/null +++ b/src/drizzle/functions/guildApps.ts @@ -0,0 +1,32 @@ +import { eq, or } from "drizzle-orm" +import db from "../db.js" +import { guildApps, InsertGuildApp } from "../schema.js" + +type GuildAppDBData = Partial> + +export async function addGuildApp(data: InsertGuildApp) { + await db.insert(guildApps).values(data) +} + +export async function getGuildApp(data: GuildAppDBData) { + const userId = data.userID ?? "" + const uuid = data.uuid ?? "" + + return await db.query.guildApps.findFirst({ + where: (({ userID: dbUserId, uuid: dbUuid }, { eq, or }) => + or( + eq(dbUuid, uuid), + eq(dbUserId, userId) + )) + }) +} + +export async function removeGuildApp(data: GuildAppDBData) { + const userId = data.userID ?? "" + const uuid = data.uuid ?? "" + + await db.delete(guildApps).where(or( + eq(guildApps.userID, userId), + eq(guildApps.uuid, uuid) + )) +} diff --git a/src/drizzle/functions/settings.ts b/src/drizzle/functions/settings.ts new file mode 100644 index 0000000..3a4eebd --- /dev/null +++ b/src/drizzle/functions/settings.ts @@ -0,0 +1,41 @@ +import { eq, or } from "drizzle-orm" +import db from "../db.js" +import { InsertSetting, settings } from "../schema.js" + +type SettingsDBData = Partial> + +export async function addSetting(data: InsertSetting) { + await db.insert(settings).values(data) +} + +export async function getSetting(data: SettingsDBData) { + const name = data.name ?? "" + const value = data.value ?? "" + + return await db.query.settings.findFirst({ + where: (({ name: dbName, value: dbValue }, { eq, or }) => + or( + eq(dbName, name), + eq(dbValue, value) + )) + }) +} + +export async function updateSetting(data: SettingsDBData) { + const name = data.name ?? "" + const value = data.value + + await db.update(settings).set({ + value: value + }).where(eq(settings.name, name)) +} + +export async function removeSetting(data: SettingsDBData) { + const name = data.name ?? "" + const value = data.value ?? "" + + await db.delete(settings).where(or( + eq(settings.name, name), + eq(settings.value, value) + )) +} diff --git a/src/drizzle/functions/staffApps.ts b/src/drizzle/functions/staffApps.ts new file mode 100644 index 0000000..d73779e --- /dev/null +++ b/src/drizzle/functions/staffApps.ts @@ -0,0 +1,32 @@ +import { eq, or } from "drizzle-orm" +import db from "../db.js" +import { InsertStaffApp, staffApps } from "../schema.js" + +type StaffAppDBData = Partial> + +export async function addStaffApp(data: InsertStaffApp) { + await db.insert(staffApps).values(data) +} + +export async function getStaffApp(data: StaffAppDBData) { + const userId = data.userID ?? "" + const uuid = data.uuid ?? "" + + return await db.query.staffApps.findFirst({ + where: (({ userID: dbUserId, uuid: dbUuid }, { eq, or }) => + or( + eq(dbUuid, uuid), + eq(dbUserId, userId) + )) + }) +} + +export async function removeStaffApp(data: StaffAppDBData) { + const userId = data.userID ?? "" + const uuid = data.uuid ?? "" + + await db.delete(staffApps).where(or( + eq(staffApps.userID, userId), + eq(staffApps.uuid, uuid) + )) +} diff --git a/src/drizzle/functions/verifies.ts b/src/drizzle/functions/verifies.ts new file mode 100644 index 0000000..d317cf3 --- /dev/null +++ b/src/drizzle/functions/verifies.ts @@ -0,0 +1,36 @@ +import { eq, or } from "drizzle-orm" +import db from "../db.js" +import { InsertVerify, verifies } from "../schema.js" + +type VerifyDBData = Partial> + +export async function addVerify(data: InsertVerify) { + await db.insert(verifies).values(data) +} + +export async function getVerify(data: VerifyDBData) { + const userId = data.userID ?? "" + const uuid = data.uuid ?? "" + + return await db.query.verifies.findFirst({ + where: (({ userID: dbUserId, uuid: dbUuid }, { eq, or }) => + or( + eq(dbUuid, uuid), + eq(dbUserId, userId) + )) + }) +} + +export async function getVerifies() { + return await db.query.verifies.findMany() +} + +export async function removeVerify(data: VerifyDBData) { + const userId = data.userID ?? "" + const uuid = data.uuid ?? "" + + await db.delete(verifies).where(or( + eq(verifies.userID, userId), + eq(verifies.uuid, uuid) + )) +} diff --git a/src/drizzle/functions/waitingList.ts b/src/drizzle/functions/waitingList.ts new file mode 100644 index 0000000..a023a44 --- /dev/null +++ b/src/drizzle/functions/waitingList.ts @@ -0,0 +1,36 @@ +import { eq, or } from "drizzle-orm" +import db from "../db.js" +import { InsertWaitingList, waitingLists } from "../schema.js" + +type WaitingListDBData = Partial> + +export async function addWaitingList(data: InsertWaitingList) { + await db.insert(waitingLists).values(data) +} + +export async function getWaitingList(data: WaitingListDBData) { + const userId = data.userID ?? "" + const uuid = data.uuid ?? "" + + return await db.query.waitingLists.findFirst({ + where: (({ userID: dbUserId, uuid: dbUuid }, { eq, or }) => + or( + eq(dbUuid, uuid), + eq(dbUserId, userId) + )) + }) +} + +export async function getWaitingLists() { + return await db.query.waitingLists.findMany() +} + +export async function removeWaitingList(data: WaitingListDBData) { + const userId = data.userID ?? "" + const uuid = data.uuid ?? "" + + await db.delete(waitingLists).where(or( + eq(waitingLists.userID, userId), + eq(waitingLists.uuid, uuid) + )) +}