Skip to content

Commit

Permalink
moves clearing kitchen messages to updateOrder
Browse files Browse the repository at this point in the history
also removes unneeded imports
  • Loading branch information
mrhappyma committed Dec 29, 2024
1 parent 3c9de37 commit b80b455
Show file tree
Hide file tree
Showing 9 changed files with 80 additions and 114 deletions.
13 changes: 1 addition & 12 deletions src/modules/deliver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,10 @@ import {
ButtonBuilder,
ButtonInteraction,
ButtonStyle,
EmbedBuilder,
} from "discord.js";
import bot, { prisma } from "..";
import { orderStatus, order } from "@prisma/client";
import { emojiInline } from "../utils/emoji";
import fillOrderMessage, { fileUrl } from "../utils/fillOrderMessage";
import updateOrderStatusMessage from "../utils/updateOrderStatusMessage";
import {
KitchenChannel,
clearKitchenMessages,
editKitchenMessage,
sendKitchenMessage,
} from "../utils/kitchenChannels";
import { updateProcessingOrders } from "./metrics";
import env from "../utils/env";
import fillOrderMessage from "../utils/fillOrderMessage";
import updateOrderStatus from "../orders/updateStatus";
import { getOrder } from "../orders/cache";

Expand Down
18 changes: 2 additions & 16 deletions src/modules/fill.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,8 @@
import {
ActionRowBuilder,
ButtonBuilder,
ButtonStyle,
EmbedBuilder,
TextBasedChannel,
} from "discord.js";
import bot, { messagesClient, prisma } from "..";
import bot from "..";
import env from "../utils/env";
import { orderStatus } from "@prisma/client";
import { emojiInline } from "../utils/emoji";
import updateOrderStatusMessage from "../utils/updateOrderStatusMessage";
import {
KitchenChannel,
clearKitchenMessages,
editKitchenMessage,
sendKitchenMessage,
} from "../utils/kitchenChannels";
import { updateProcessingOrders } from "./metrics";
import { KitchenChannel, sendKitchenMessage } from "../utils/kitchenChannels";
import { getOrder } from "../orders/cache";
import updateOrderStatus, { sendOrderForFilling } from "../orders/updateStatus";

Expand Down
2 changes: 1 addition & 1 deletion src/modules/lookup.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { EmbedBuilder, SlashCommandBuilder } from "discord.js";
import bot, { prisma } from "..";
import bot from "..";
import { orderStatus } from "@prisma/client";
import { fileUrl } from "../utils/fillOrderMessage";
import { getOrder } from "../orders/cache";
Expand Down
4 changes: 2 additions & 2 deletions src/modules/metrics.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { OrderStatus } from "aws-sdk/clients/outposts";
import { Counter, Gauge, Histogram, collectDefaultMetrics } from "prom-client";
import type { OrderStatus } from "aws-sdk/clients/outposts";
import { Gauge, collectDefaultMetrics } from "prom-client";
import { prisma } from "..";
import { orderStatus } from "@prisma/client";

Expand Down
21 changes: 3 additions & 18 deletions src/modules/pack.ts
Original file line number Diff line number Diff line change
@@ -1,27 +1,12 @@
import {
ActionRowBuilder,
ButtonBuilder,
ButtonStyle,
EmbedBuilder,
ModalBuilder,
TextInputBuilder,
TextInputStyle,
ThreadChannel,
} from "discord.js";
import { ThreadChannel } from "discord.js";
import bot, { messagesClient, prisma } from "..";
import env from "../utils/env";
import { orderStatus } from "@prisma/client";
import emoji, { emojiInline } from "../utils/emoji";
import updateOrderStatusMessage from "../utils/updateOrderStatusMessage";
import {
KitchenChannel,
clearKitchenMessages,
sendKitchenMessage,
} from "../utils/kitchenChannels";
import emoji from "../utils/emoji";
import { KitchenChannel } from "../utils/kitchenChannels";
import s3 from "./s3";
import handleError from "./sentry";
import Sqids from "sqids";
import { updateProcessingOrders } from "./metrics";
import updateOrderStatus from "../orders/updateStatus";

// this took way too long to get copilot to spit out it had better work
Expand Down
11 changes: 1 addition & 10 deletions src/modules/reject.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,11 @@
import {
ActionRowBuilder,
EmbedBuilder,
ModalBuilder,
TextInputBuilder,
TextInputStyle,
} from "discord.js";
import bot, { prisma } from "..";
import bot from "..";
import { orderStatus } from "@prisma/client";
import { emojiInline } from "../utils/emoji";
import updateOrderStatusMessage from "../utils/updateOrderStatusMessage";
import {
KitchenChannel,
clearKitchenMessages,
sendKitchenMessage,
} from "../utils/kitchenChannels";
import { updateProcessingOrders } from "./metrics";
import updateOrderStatus from "../orders/updateStatus";

bot.registerButton(/order:(\d+):reject/, async (interaction) => {
Expand Down
38 changes: 36 additions & 2 deletions src/orders/cache.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { orderStatus, type order } from "@prisma/client";
import { prisma } from "..";
import { sendOrderForFilling } from "./updateStatus";
import sendLogMessage from "../utils/log";
import { deleteKitchenMessage, KitchenChannel } from "../utils/kitchenChannels";

const activeOrderStatuses: orderStatus[] = [
orderStatus.ORDERED,
Expand All @@ -27,12 +28,45 @@ export const getOrder = async (id: number): Promise<order | null> => {
return order;
};

export const updateOrder = async (id: number, data: Partial<order>) => {
const order = await prisma.order.update({ where: { id }, data });
export const updateOrder = async (
id: number,
data: Partial<order>,
clearMessages = false
) => {
if (clearMessages) {
const order = await getOrder(id);
if (order) {
for (const message of order.relatedKitchenMessages) {
const [channel, id] = message.split(":");
await deleteKitchenMessage(Number(channel) as KitchenChannel, id);
}
data.relatedKitchenMessages = [];
}
}

const order = await prisma.order.update({
where: { id },
data,
});
cache.set(id, order);
return order;
};

//TODO: rework this into update? somehow remove the extra db call
export const addRelatedKitchenMessage = async (
orderId: number,
channel: KitchenChannel,
messageId: string
) => {
const order = await getOrder(orderId);
if (!order) return;
await updateOrder(orderId, {
relatedKitchenMessages: order.relatedKitchenMessages.concat(
`${channel}:${messageId}`
),
});
};

export const getActiveOrdersForUser = (id: string) => {
return Array.from(cache.values()).filter(
(order) =>
Expand Down
44 changes: 26 additions & 18 deletions src/orders/updateStatus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import env from "../utils/env";
import {
sendKitchenMessage,
KitchenChannel,
clearKitchenMessages,
editKitchenMessage,
} from "../utils/kitchenChannels";
import { emojiInline } from "../utils/emoji";
Expand Down Expand Up @@ -129,12 +128,15 @@ const updateOrderStatus = async (
});
break;
case orderStatus.PACKING:
order = await updateOrder(id, {
status,
fileUrl: p.fileUrl,
});
order = await updateOrder(
id,
{
status,
fileUrl: p.fileUrl,
},
true
);
setTimeout(() => finishPackOrder(id), 1000 * 60 * 5);
await clearKitchenMessages(id);
break;
case orderStatus.PACKED:
order = await updateOrder(id, {
Expand Down Expand Up @@ -227,10 +229,13 @@ const updateOrderStatus = async (
});
break;
case orderStatus.DELIVERED:
order = await updateOrder(id, {
status,
});
await clearKitchenMessages(id);
order = await updateOrder(
id,
{
status,
},
true
);
const isImage =
order.fileUrl?.endsWith(".png") ||
order.fileUrl?.endsWith(".jpg") ||
Expand Down Expand Up @@ -262,12 +267,15 @@ const updateOrderStatus = async (
});
break;
case orderStatus.REJECTED:
order = await updateOrder(id, {
status,
rejectorId: chef,
rejectedReason: p.reason,
});
await clearKitchenMessages(id);
order = await updateOrder(
id,
{
status,
rejectorId: chef,
rejectedReason: p.reason,
},
true
);
const orderRejectionEmbed = new EmbedBuilder()
.setTitle(`Order from **${order.customerUsername}**`)
.setDescription(order.order)
Expand Down Expand Up @@ -359,8 +367,8 @@ export default updateOrderStatus;
* @param updateDB whether the database needs to be updated to reflect this. default true.
*/
export const sendOrderForFilling = async (order: order, updateDB = true) => {
if (updateDB) await updateOrder(order.id, { status: orderStatus.ORDERED });
await clearKitchenMessages(order.id);
if (updateDB)
await updateOrder(order.id, { status: orderStatus.ORDERED }, true);

const kitchenActionRow = new ActionRowBuilder<ButtonBuilder>().addComponents([
new ButtonBuilder()
Expand Down
43 changes: 8 additions & 35 deletions src/utils/kitchenChannels.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { WebhookClient, WebhookMessageCreateOptions } from "discord.js";
import env from "./env";
import bot, { prisma } from "..";
import { addRelatedKitchenMessage } from "../orders/cache";

export const enum KitchenChannel {
orders = 0,
Expand Down Expand Up @@ -47,16 +48,7 @@ export const sendKitchenMessage = async (
...content,
});
if (order) {
await prisma.order.update({
where: {
id: order,
},
data: {
relatedKitchenMessages: {
push: `${channel}:${message.id}`,
},
},
});
await addRelatedKitchenMessage(order, channel, message.id);
}
return message;
};
Expand All @@ -74,29 +66,10 @@ export const editKitchenMessage = async (
});
};

export const clearKitchenMessages = async (order: number) => {
const orderRecord = await prisma.order.findUnique({
where: {
id: order,
},
select: {
relatedKitchenMessages: true,
},
});
if (!orderRecord) return;
for (const message of orderRecord.relatedKitchenMessages) {
const [channel, id] = message.split(":");
const webhook = webhooks[Number(channel) as KitchenChannel];
await webhook.deleteMessage(id);
}
await prisma.order.update({
where: {
id: order,
},
data: {
relatedKitchenMessages: {
set: [],
},
},
});
export const deleteKitchenMessage = async (
channel: KitchenChannel,
messageId: string
) => {
const webhook = webhooks[channel];
return await webhook.deleteMessage(messageId);
};

0 comments on commit b80b455

Please sign in to comment.