Medication reminder and pdr worker
This commit is contained in:
+35
-1
@@ -2,7 +2,12 @@ import { Worker } from 'bullmq';
|
||||
|
||||
import { ensureSchema } from './db/schema.js';
|
||||
import { db } from './db/client.js';
|
||||
import { runBirdMilestoneReminders, startBirdMilestoneReminderScheduler } from './app.js';
|
||||
import {
|
||||
runBirdMilestoneReminders,
|
||||
runMedicationReminders,
|
||||
startBirdMilestoneReminderScheduler,
|
||||
startMedicationReminderScheduler,
|
||||
} from './app.js';
|
||||
import {
|
||||
adoptionReportQueueName,
|
||||
closeAdoptionReportQueue,
|
||||
@@ -15,10 +20,17 @@ import {
|
||||
type BirdMilestoneReminderJobData,
|
||||
type BirdMilestoneReminderJobResult,
|
||||
} from './queues/birdMilestoneReminderQueue.js';
|
||||
import {
|
||||
closeMedicationReminderQueue,
|
||||
medicationReminderQueueName,
|
||||
type MedicationReminderJobData,
|
||||
type MedicationReminderJobResult,
|
||||
} from './queues/medicationReminderQueue.js';
|
||||
import { redisConnection } from './queues/redisConnection.js';
|
||||
import { renderAdoptionReportForBird } from './reports/adoptionReportJob.js';
|
||||
|
||||
let birdMilestoneWorker: Worker<BirdMilestoneReminderJobData, BirdMilestoneReminderJobResult> | null = null;
|
||||
let medicationReminderWorker: Worker<MedicationReminderJobData, MedicationReminderJobResult> | null = null;
|
||||
let adoptionReportWorker: Worker<AdoptionReportJobData, AdoptionReportJobResult> | null = null;
|
||||
|
||||
const startWorker = async () => {
|
||||
@@ -43,6 +55,25 @@ const startWorker = async () => {
|
||||
console.error(`Bird milestone reminder job failed: id=${job?.id ?? 'unknown'}`, error);
|
||||
});
|
||||
|
||||
medicationReminderWorker = new Worker<MedicationReminderJobData, MedicationReminderJobResult>(
|
||||
medicationReminderQueueName,
|
||||
async (job) => {
|
||||
const result = await runMedicationReminders(job.data.runDate, job.data.currentTime);
|
||||
console.log(
|
||||
`Medication reminder job completed for ${result.runDate} ${result.currentTime}: checked=${result.checked}, sent=${result.sent}, skipped=${result.skipped}, failed=${result.failed}`,
|
||||
);
|
||||
return result;
|
||||
},
|
||||
{
|
||||
connection: redisConnection,
|
||||
concurrency: 1,
|
||||
},
|
||||
);
|
||||
|
||||
medicationReminderWorker.on('failed', (job, error) => {
|
||||
console.error(`Medication reminder job failed: id=${job?.id ?? 'unknown'}`, error);
|
||||
});
|
||||
|
||||
adoptionReportWorker = new Worker<AdoptionReportJobData, AdoptionReportJobResult>(
|
||||
adoptionReportQueueName,
|
||||
async (job) => {
|
||||
@@ -63,14 +94,17 @@ const startWorker = async () => {
|
||||
});
|
||||
|
||||
startBirdMilestoneReminderScheduler();
|
||||
startMedicationReminderScheduler();
|
||||
console.log('FlockPal worker started.');
|
||||
};
|
||||
|
||||
const shutdown = async (signal: string) => {
|
||||
console.log(`FlockPal worker received ${signal}; shutting down.`);
|
||||
await birdMilestoneWorker?.close();
|
||||
await medicationReminderWorker?.close();
|
||||
await adoptionReportWorker?.close();
|
||||
await closeBirdMilestoneReminderQueue();
|
||||
await closeMedicationReminderQueue();
|
||||
await closeAdoptionReportQueue();
|
||||
await db.close();
|
||||
process.exit(0);
|
||||
|
||||
Reference in New Issue
Block a user