fix: generate missing migration for Menu and Newsletter tables

This commit is contained in:
Your Name committed 2026-06-14 00:16:05 -04:00
1 parent 363be70e11
commit f5029fc935
123 files changed
+8683

No files matched your search

+7
View File
@@ -0,0 +1,7 @@
import * as line from '@line/bot-sdk';
export declare const lineConfig: {
channelAccessToken: string;
channelSecret: string;
};
export declare const lineClient: line.messagingApi.MessagingApiClient;
//# sourceMappingURL=lineClient.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"lineClient.d.ts","sourceRoot":"","sources":["lineClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AAKtC,eAAO,MAAM,UAAU;;;CAGtB,CAAC;AAEF,eAAO,MAAM,UAAU,sCAErB,CAAC"}
+11
View File
@@ -0,0 +1,11 @@
import * as line from '@line/bot-sdk';
const channelAccessToken = process.env.LINE_CHANNEL_ACCESS_TOKEN || '';
const channelSecret = process.env.LINE_CHANNEL_SECRET || '';
export const lineConfig = {
channelAccessToken,
channelSecret,
};
export const lineClient = new line.messagingApi.MessagingApiClient({
channelAccessToken,
});
//# sourceMappingURL=lineClient.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"lineClient.js","sourceRoot":"","sources":["lineClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AAEtC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC;AACvE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;AAE5D,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,kBAAkB;IAClB,aAAa;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC;IACjE,kBAAkB;CACnB,CAAC,CAAC"}
+6
View File
@@ -0,0 +1,6 @@
export declare function sendOrderCreatedNotification(orderId: number): Promise<void>;
export declare function sendPaymentConfirmedNotification(orderId: number): Promise<void>;
export declare function sendOrderShippedNotification(orderId: number): Promise<void>;
export declare function sendOrderCancelledNotification(orderId: number): Promise<void>;
export declare function markOrderAsPaid(orderId: number): Promise<void>;
//# sourceMappingURL=notifications.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["notifications.ts"],"names":[],"mappings":"AAGA,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,MAAM,iBAqNjE;AAED,wBAAsB,gCAAgC,CAAC,OAAO,EAAE,MAAM,iBA0HrE;AAED,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,MAAM,iBA2GjE;AAED,wBAAsB,8BAA8B,CAAC,OAAO,EAAE,MAAM,iBAkFnE;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,iBAoCpD"}
+554
View File
@@ -0,0 +1,554 @@
import prisma from "./prisma";
import { lineClient } from "./lineClient";
export async function sendOrderCreatedNotification(orderId) {
try {
const order = await prisma.order.findUnique({
where: { id: orderId },
include: { items: true, customer: true }
});
if (!order || !order.customer?.lineUserId) {
console.log(`[Notification] Order #${orderId} has no associated lineUserId or does not exist.`);
return;
}
const settings = await prisma.storeSettings.findFirst();
const bankName = settings?.bankName || "KASIKORNBANK (KBANK)";
const bankAccountNumber = settings?.bankAccountNumber || "012-3-45678-9";
const bankAccountName = settings?.bankAccountName || "HomAroma Co., Ltd.";
const itemContents = order.items.map(item => ({
type: "box",
layout: "horizontal",
contents: [
{
type: "text",
text: `${item.productName}${item.variantSize ? ` (${item.variantSize})` : ""} x ${item.quantity}`,
size: "sm",
color: "#333333",
flex: 3,
wrap: true
},
{
type: "text",
text: `฿${item.priceAtPurchase * item.quantity}`,
size: "sm",
color: "#1C3F3A",
weight: "bold",
align: "end",
flex: 1
}
]
}));
const flexMessage = {
type: "flex",
altText: `HomAroma: คำสั่งซื้อ #${order.id} ได้รับแล้ว กรุณาชำระเงิน`,
contents: {
type: "bubble",
header: {
type: "box",
layout: "vertical",
backgroundColor: "#1C3F3A",
contents: [
{
type: "text",
text: "HomAroma Official",
color: "#D4B16A",
weight: "bold",
size: "xs"
},
{
type: "text",
text: "ได้รับคำสั่งซื้อของคุณแล้ว",
color: "#FFFFFF",
weight: "bold",
size: "md",
margin: "sm"
}
]
},
body: {
type: "box",
layout: "vertical",
contents: [
{
type: "text",
text: `หมายเลขออเดอร์: #HM-${order.id}`,
weight: "bold",
size: "sm",
color: "#333333"
},
{
type: "separator",
margin: "md"
},
{
type: "box",
layout: "vertical",
margin: "md",
spacing: "sm",
contents: [
{
type: "box",
layout: "horizontal",
contents: [
{
type: "text",
text: "รายการสินค้า",
size: "xs",
color: "#888888",
flex: 3
},
{
type: "text",
text: "ยอดรวม",
size: "xs",
color: "#888888",
align: "end",
flex: 1
}
]
},
...itemContents
]
},
{
type: "separator",
margin: "md"
},
{
type: "box",
layout: "horizontal",
margin: "md",
contents: [
{
type: "text",
text: "ยอดชำระสุทธิ (รวมค่าส่ง)",
size: "sm",
color: "#555555",
weight: "bold",
flex: 3
},
{
type: "text",
text: `฿${order.totalAmount}`,
size: "sm",
color: "#1C3F3A",
weight: "bold",
align: "end",
flex: 1
}
]
},
{
type: "separator",
margin: "md"
},
{
type: "box",
layout: "vertical",
margin: "md",
contents: [
{
type: "text",
text: "🏦 ช่องทางการชำระเงินโอนเงิน:",
size: "xs",
color: "#555555",
weight: "bold"
},
{
type: "text",
text: `${bankName} (${bankAccountNumber})`,
size: "xs",
color: "#1C3F3A",
margin: "xs",
weight: "bold"
},
{
type: "text",
text: `ชื่อบัญชี: ${bankAccountName}`,
size: "xs",
color: "#555555"
}
]
}
]
},
footer: {
type: "box",
layout: "vertical",
spacing: "sm",
contents: [
{
type: "button",
style: "primary",
color: "#1C3F3A",
action: {
"type": "uri",
"label": "แนบสลิปชำระเงิน",
"uri": `https://spa.homaroma.shop/order-success?id=${order.id}`
}
},
{
type: "button",
style: "link",
height: "sm",
action: {
"type": "uri",
"label": "ติดตามสถานะออเดอร์",
"uri": "https://spa.homaroma.shop/track-order"
}
}
]
}
}
};
await lineClient.pushMessage({
to: order.customer.lineUserId,
messages: [flexMessage]
});
console.log(`[Notification] OrderCreated notification sent for Order #${orderId}`);
}
catch (err) {
console.error(`[Notification] Failed to send OrderCreated notification for Order #${orderId}:`, err);
}
}
export async function sendPaymentConfirmedNotification(orderId) {
try {
const order = await prisma.order.findUnique({
where: { id: orderId },
include: { customer: true }
});
if (!order || !order.customer?.lineUserId) {
console.log(`[Notification] Order #${orderId} has no associated lineUserId or does not exist.`);
return;
}
const flexMessage = {
type: "flex",
altText: "HomAroma: ได้รับการชำระเงินเรียบร้อยแล้ว",
contents: {
type: "bubble",
body: {
type: "box",
layout: "vertical",
contents: [
{
type: "box",
layout: "vertical",
alignItems: "center",
contents: [
{
type: "text",
text: "✨ ชำระเงินสำเร็จ ✨",
weight: "bold",
size: "xl",
color: "#1C3F3A"
},
{
type: "text",
text: `ขอขอบคุณสำหรับคำสั่งซื้อออเดอร์ #HM-${order.id}`,
size: "xs",
color: "#888888",
margin: "xs"
}
]
},
{
type: "box",
layout: "vertical",
backgroundColor: "#F4F6F5",
margin: "lg",
paddingAll: "md",
cornerRadius: "md",
contents: [
{
type: "box",
layout: "horizontal",
contents: [
{
type: "text",
text: "ได้รับแต้มครั้งนี้",
size: "sm",
color: "#555555"
},
{
type: "text",
text: `+${order.pointsEarned} แต้ม`,
weight: "bold",
size: "sm",
color: "#1C3F3A",
align: "end"
}
]
},
{
type: "box",
layout: "horizontal",
margin: "xs",
contents: [
{
type: "text",
text: "แต้มสะสมรวมล่าสุด",
size: "sm",
color: "#555555"
},
{
type: "text",
text: `${order.customer.points} แต้ม`,
weight: "bold",
size: "sm",
color: "#D4B16A",
align: "end"
}
]
}
]
}
]
},
footer: {
type: "box",
layout: "vertical",
contents: [
{
type: "button",
style: "primary",
color: "#1C3F3A",
action: {
"type": "uri",
"label": "แลกของรางวัล & คูปองสะสม",
"uri": "https://spa.homaroma.shop/profile"
}
}
]
}
}
};
await lineClient.pushMessage({
to: order.customer.lineUserId,
messages: [flexMessage]
});
console.log(`[Notification] PaymentConfirmed notification sent for Order #${orderId}`);
}
catch (err) {
console.error(`[Notification] Failed to send PaymentConfirmed notification for Order #${orderId}:`, err);
}
}
export async function sendOrderShippedNotification(orderId) {
try {
const order = await prisma.order.findUnique({
where: { id: orderId },
include: { customer: true }
});
if (!order || !order.customer?.lineUserId) {
console.log(`[Notification] Order #${orderId} has no associated lineUserId or does not exist.`);
return;
}
const flexMessage = {
type: "flex",
altText: "HomAroma: สินค้าของคุณอยู่ระหว่างจัดส่ง",
contents: {
type: "bubble",
header: {
type: "box",
layout: "vertical",
backgroundColor: "#1C3F3A",
contents: [
{
type: "text",
text: "ออเดอร์ของคุณกำลังเดินทาง 🚚",
color: "#FFFFFF",
weight: "bold",
size: "md"
}
]
},
body: {
type: "box",
layout: "vertical",
spacing: "md",
contents: [
{
type: "box",
layout: "horizontal",
contents: [
{
type: "text",
text: "หมายเลขออเดอร์:",
size: "sm",
color: "#888888",
flex: 2
},
{
type: "text",
text: `#HM-${order.id}`,
size: "sm",
color: "#333333",
weight: "bold",
flex: 3
}
]
},
{
type: "box",
layout: "horizontal",
contents: [
{
type: "text",
text: "หมายเลขพัสดุ:",
size: "sm",
color: "#888888",
flex: 2
},
{
type: "text",
text: order.trackingNo || "อยู่ระหว่างเข้ารับพัสดุ",
size: "sm",
color: "#1C3F3A",
weight: "bold",
flex: 3
}
]
}
]
},
footer: {
type: "box",
layout: "vertical",
contents: [
{
type: "button",
style: "primary",
color: "#1C3F3A",
action: {
"type": "uri",
"label": "เช็คสถานะการจัดส่ง",
"uri": "https://spa.homaroma.shop/track-order"
}
}
]
}
}
};
await lineClient.pushMessage({
to: order.customer.lineUserId,
messages: [flexMessage]
});
console.log(`[Notification] OrderShipped notification sent for Order #${orderId}`);
}
catch (err) {
console.error(`[Notification] Failed to send OrderShipped notification for Order #${orderId}:`, err);
}
}
export async function sendOrderCancelledNotification(orderId) {
try {
const order = await prisma.order.findUnique({
where: { id: orderId },
include: { customer: true }
});
if (!order || !order.customer?.lineUserId) {
console.log(`[Notification] Order #${orderId} has no associated lineUserId or does not exist.`);
return;
}
const flexMessage = {
type: "flex",
altText: "HomAroma: คำสั่งซื้อของคุณถูกยกเลิกแล้ว",
contents: {
type: "bubble",
header: {
type: "box",
layout: "vertical",
backgroundColor: "#8C2A2A",
contents: [
{
type: "text",
text: "คำสั่งซื้อถูกยกเลิก 🚫",
color: "#FFFFFF",
weight: "bold",
size: "md"
}
]
},
body: {
type: "box",
layout: "vertical",
spacing: "md",
contents: [
{
type: "text",
text: `คำสั่งซื้อหมายเลข #HM-${order.id} ได้ถูกยกเลิกแล้ว เนื่องจากเกินกำหนดเวลาชำระเงิน หรือสิทธิประโยชน์บางประการ หรือตามความประสงค์ของคุณ`,
size: "sm",
color: "#333333",
wrap: true
},
...(order.pointsUsed > 0 ? [
{
type: "text",
text: `* ระบบได้ทำการคืนคะแนนสะสมจำนวน ${order.pointsUsed} แต้มเข้าบัญชีของคุณเรียบร้อยแล้ว`,
size: "xs",
color: "#8C2A2A",
weight: "bold",
margin: "md"
}
] : [])
]
},
footer: {
type: "box",
layout: "vertical",
contents: [
{
type: "button",
style: "primary",
color: "#1C3F3A",
action: {
"type": "uri",
"label": "ช้อปต่ออีกครั้ง",
"uri": "https://spa.homaroma.shop/"
}
}
]
}
}
};
await lineClient.pushMessage({
to: order.customer.lineUserId,
messages: [flexMessage]
});
console.log(`[Notification] OrderCancelled notification sent for Order #${orderId}`);
}
catch (err) {
console.error(`[Notification] Failed to send OrderCancelled notification for Order #${orderId}:`, err);
}
}
export async function markOrderAsPaid(orderId) {
try {
const order = await prisma.order.findUnique({
where: { id: orderId }
});
if (!order) {
console.log(`[Payment] Order #${orderId} not found in markOrderAsPaid.`);
return;
}
if (order.status === "PAID") {
console.log(`[Payment] Order #${orderId} is already PAID.`);
return;
}
// 1. Update status to PAID
await prisma.order.update({
where: { id: orderId },
data: { status: "PAID" }
});
// 2. Grant points
if (order.customerId && order.pointsEarned > 0) {
await prisma.customer.update({
where: { id: order.customerId },
data: { points: { increment: order.pointsEarned } }
});
console.log(`[Payment] Granted ${order.pointsEarned} points to Customer #${order.customerId} for Order #${orderId}`);
}
// 3. Send payment notification
await sendPaymentConfirmedNotification(orderId);
}
catch (err) {
console.error(`[Payment] Error in markOrderAsPaid for Order #${orderId}:`, err);
}
}
//# sourceMappingURL=notifications.js.map
@@ -0,0 +1 @@
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["notifications.ts"],"names":[],"mappings":"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 truncated
+7
View File
@@ -0,0 +1,7 @@
import { PrismaClient } from "@prisma/client";
import { PrismaPg } from "@prisma/adapter-pg";
declare const prisma: PrismaClient<{
adapter: PrismaPg;
}, never, import("@prisma/client/runtime/client").DefaultArgs>;
export default prisma;
//# sourceMappingURL=prisma.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["prisma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAS9C,QAAA,MAAM,MAAM;;8DAAgC,CAAC;AAE7C,eAAe,MAAM,CAAC"}
+9
View File
@@ -0,0 +1,9 @@
import { PrismaClient } from "@prisma/client";
import { PrismaPg } from "@prisma/adapter-pg";
import dotenv from "dotenv";
dotenv.config();
const connectionString = process.env.DATABASE_URL;
const adapter = new PrismaPg({ connectionString });
const prisma = new PrismaClient({ adapter });
export default prisma;
//# sourceMappingURL=prisma.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"prisma.js","sourceRoot":"","sources":["prisma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,YAAa,CAAC;AAEnD,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAEnD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AAE7C,eAAe,MAAM,CAAC"}