enh
This commit is contained in:
parent
38060e78ff
commit
bac9b04a28
2 changed files with 47 additions and 15 deletions
45
apps/backend/src/lib/delete-orders.ts
Normal file
45
apps/backend/src/lib/delete-orders.ts
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
import { db } from '../db/db_index';
|
||||
import { orders, orderItems, orderStatus, payments, refunds, couponUsage, complaints } from '../db/schema';
|
||||
import { eq, inArray } from 'drizzle-orm';
|
||||
|
||||
/**
|
||||
* Delete orders and all their related records
|
||||
* @param orderIds Array of order IDs to delete
|
||||
* @returns Promise<void>
|
||||
* @throws Error if deletion fails
|
||||
*/
|
||||
export const deleteOrders = async (orderIds: number[]): Promise<void> => {
|
||||
if (orderIds.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
// Delete child records first (in correct order to avoid FK constraint errors)
|
||||
|
||||
// 1. Delete coupon usage records
|
||||
await db.delete(couponUsage).where(inArray(couponUsage.orderId, orderIds));
|
||||
|
||||
// 2. Delete complaints related to these orders
|
||||
await db.delete(complaints).where(inArray(complaints.orderId, orderIds));
|
||||
|
||||
// 3. Delete refunds
|
||||
await db.delete(refunds).where(inArray(refunds.orderId, orderIds));
|
||||
|
||||
// 4. Delete payments
|
||||
await db.delete(payments).where(inArray(payments.orderId, orderIds));
|
||||
|
||||
// 5. Delete order status records
|
||||
await db.delete(orderStatus).where(inArray(orderStatus.orderId, orderIds));
|
||||
|
||||
// 6. Delete order items
|
||||
await db.delete(orderItems).where(inArray(orderItems.orderId, orderIds));
|
||||
|
||||
// 7. Finally delete the orders themselves
|
||||
await db.delete(orders).where(inArray(orders.id, orderIds));
|
||||
|
||||
console.log(`Successfully deleted ${orderIds.length} orders and all related records`);
|
||||
} catch (error) {
|
||||
console.error(`Failed to delete orders ${orderIds.join(', ')}:`, error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
import './notif-job';
|
||||
import { initializeAllStores } from '../stores/store-initializer';
|
||||
import { startOrderHandler, publishOrder } from './post-order-handler';
|
||||
import { deleteOrders } from './delete-orders';
|
||||
|
||||
/**
|
||||
* Initialize all application services
|
||||
|
|
@ -23,21 +24,7 @@ export const initFunc = async (): Promise<void> => {
|
|||
// Start post order handler (Redis Pub/Sub subscriber)
|
||||
await startOrderHandler();
|
||||
|
||||
// Wait a moment for subscription to be ready, then publish demo order
|
||||
// setTimeout(async () => {
|
||||
// console.log('Publishing demo order for testing...');
|
||||
// await publishOrder({
|
||||
// orders: [{
|
||||
// deliveryTime: new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString(), // Tomorrow
|
||||
// orderPlaceTime: new Date().toISOString(),
|
||||
// totalAmount: 550,
|
||||
// orderItems: [
|
||||
// { productName: "Chicken Breast", quantity: 2 },
|
||||
// { productName: "Mutton Curry Cut", quantity: 1 },
|
||||
// ],
|
||||
// }],
|
||||
// });
|
||||
// }, 20000);
|
||||
|
||||
|
||||
console.log('Application initialization completed successfully');
|
||||
} catch (error) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue