85 lines
No EOL
2.6 KiB
TypeScript
85 lines
No EOL
2.6 KiB
TypeScript
import * as cron from 'node-cron';
|
|
import { db } from '@/src/db/db_index'
|
|
import { productInfo, keyValStore } from '@/src/db/schema'
|
|
import { inArray, eq } from 'drizzle-orm';
|
|
import { CONST_KEYS } from '@/src/lib/const-keys'
|
|
import { computeConstants } from '@/src/lib/const-store'
|
|
|
|
|
|
const MUTTON_ITEMS = [
|
|
12, //Lamb mutton
|
|
14, // Mutton Boti
|
|
35, //Mutton Kheema
|
|
84, //Mutton Brain
|
|
4, //Mutton
|
|
86, //Mutton Chops
|
|
87, //Mutton Soup bones
|
|
85 //Mutton paya
|
|
];
|
|
|
|
|
|
|
|
export const startAutomatedJobs = () => {
|
|
// Job to disable flash delivery for mutton at 12 PM daily
|
|
cron.schedule('0 12 * * *', async () => {
|
|
try {
|
|
console.log('Disabling flash delivery for products at 12 PM');
|
|
await db
|
|
.update(productInfo)
|
|
.set({ isFlashAvailable: false })
|
|
.where(inArray(productInfo.id, MUTTON_ITEMS));
|
|
console.log('Flash delivery disabled successfully');
|
|
} catch (error) {
|
|
console.error('Error disabling flash delivery:', error);
|
|
}
|
|
});
|
|
|
|
// Job to enable flash delivery for mutton at 6 AM daily
|
|
cron.schedule('0 6 * * *', async () => {
|
|
try {
|
|
console.log('Enabling flash delivery for products at 5 AM');
|
|
await db
|
|
.update(productInfo)
|
|
.set({ isFlashAvailable: true })
|
|
.where(inArray(productInfo.id, MUTTON_ITEMS));
|
|
console.log('Flash delivery enabled successfully');
|
|
} catch (error) {
|
|
console.error('Error enabling flash delivery:', error);
|
|
}
|
|
});
|
|
|
|
// Job to disable flash delivery feature at 9 PM daily
|
|
cron.schedule('0 21 * * *', async () => {
|
|
try {
|
|
console.log('Disabling flash delivery feature at 9 PM');
|
|
await db
|
|
.update(keyValStore)
|
|
.set({ value: false })
|
|
.where(eq(keyValStore.key, CONST_KEYS.isFlashDeliveryEnabled));
|
|
await computeConstants(); // Refresh Redis cache
|
|
console.log('Flash delivery feature disabled successfully');
|
|
} catch (error) {
|
|
console.error('Error disabling flash delivery feature:', error);
|
|
}
|
|
});
|
|
|
|
// Job to enable flash delivery feature at 6 AM daily
|
|
cron.schedule('0 6 * * *', async () => {
|
|
try {
|
|
console.log('Enabling flash delivery feature at 6 AM');
|
|
await db
|
|
.update(keyValStore)
|
|
.set({ value: true })
|
|
.where(eq(keyValStore.key, CONST_KEYS.isFlashDeliveryEnabled));
|
|
await computeConstants(); // Refresh Redis cache
|
|
console.log('Flash delivery feature enabled successfully');
|
|
} catch (error) {
|
|
console.error('Error enabling flash delivery feature:', error);
|
|
}
|
|
});
|
|
|
|
console.log('Automated jobs scheduled');
|
|
};
|
|
|
|
// Optional: Call on import if desired, or export and call in main app
|
|
// startAutomatedJobs();
|