This commit is contained in:
shafi54 2026-02-01 19:19:34 +05:30
parent 38060e78ff
commit bac9b04a28
2 changed files with 47 additions and 15 deletions

View 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;
}
};

View file

@ -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) {