import Quiz from '../models/quiz';

const INTERVAL = 60 * 1000; // every minute

export const expireQuizzes = async () => {
  const result = await Quiz.updateMany(
    { status: 'active', end_datetime: { $lte: new Date() } },
    { status: 'inactive' },
  );
  if (result.modifiedCount > 0) {
    console.log(`[Cron] Marked ${result.modifiedCount} expired quiz(es) as inactive`);
  }
};

export const startQuizExpiryCron = () => {
  // Run immediately on start
  expireQuizzes().catch((e) => console.error('[Cron] Initial expiry check failed:', e.message));

  setInterval(async () => {
    try {
      await expireQuizzes();
    } catch (error) {
      console.error('[Cron] Quiz expiry check failed:', (error as Error).message);
    }
  }, INTERVAL);

  console.log('[Cron] Quiz expiry checker started (every 60s)');
};
