feat: add due date reminders functionality with cron jobs and test scripts
This commit is contained in:
44
check-project-dates.mjs
Normal file
44
check-project-dates.mjs
Normal file
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import db from "./src/lib/db.js";
|
||||
import { parseISO, isAfter, startOfDay, addDays } from "date-fns";
|
||||
|
||||
const today = startOfDay(new Date());
|
||||
const threeDaysFromNow = addDays(today, 3);
|
||||
const oneDayFromNow = addDays(today, 1);
|
||||
|
||||
console.log(`Today: ${today.toISOString().split('T')[0]}`);
|
||||
console.log(`3 days from now: ${threeDaysFromNow.toISOString().split('T')[0]}`);
|
||||
console.log(`1 day from now: ${oneDayFromNow.toISOString().split('T')[0]}`);
|
||||
|
||||
const projects = db.prepare(`
|
||||
SELECT project_name, finish_date, project_status
|
||||
FROM projects
|
||||
WHERE finish_date IS NOT NULL
|
||||
AND project_status != 'fulfilled'
|
||||
AND project_status != 'cancelled'
|
||||
ORDER BY finish_date ASC
|
||||
`).all();
|
||||
|
||||
console.log(`\nFound ${projects.length} active projects with due dates:`);
|
||||
|
||||
projects.forEach(project => {
|
||||
try {
|
||||
const finishDate = parseISO(project.finish_date);
|
||||
const finishDateStart = startOfDay(finishDate);
|
||||
|
||||
const isDueIn3Days = finishDateStart.getTime() === threeDaysFromNow.getTime();
|
||||
const isDueIn1Day = finishDateStart.getTime() === oneDayFromNow.getTime();
|
||||
const isOverdue = isAfter(today, finishDateStart);
|
||||
|
||||
let status = '';
|
||||
if (isDueIn3Days) status = '⚠️ DUE IN 3 DAYS';
|
||||
else if (isDueIn1Day) status = '🚨 DUE IN 1 DAY';
|
||||
else if (isOverdue) status = '❌ OVERDUE';
|
||||
else status = '📅 Future';
|
||||
|
||||
console.log(`${status} - ${project.project_name}: ${project.finish_date.split('T')[0]} (${project.project_status})`);
|
||||
} catch (error) {
|
||||
console.log(`❌ Error parsing date for ${project.project_name}: ${project.finish_date}`);
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user