/**
 * Nightly Clipper Reset
 *
 * Clears all user clipboards (rm_user_clips) so stale selections
 * from yesterday don't carry over and confuse users.
 *
 * Runs as part of the nightly pipeline alongside forecast archival.
 *
 * Usage: npx tsx src/workers/nightly-clipper-reset.ts
 * Cron:  0 8 * * *  (3:00 AM ET daily)
 */

import dotenv from 'dotenv';
import path from 'path';
dotenv.config({ path: path.join(__dirname, '../../.env') });

import pool from '../db';

async function main() {
  const now = new Date().toISOString();
  console.log(`[${now}] Starting nightly clipper reset...`);

  try {
    // Count clips before deletion (for logging)
    const { rows: countRows } = await pool.query(
      'SELECT COUNT(*)::int AS total, COUNT(DISTINCT user_id)::int AS users FROM rm_user_clips'
    );
    const { total, users } = countRows[0];

    if (total === 0) {
      console.log('No clips to clear. All clipboards already empty.');
      await pool.end();
      return;
    }

    // Delete all clips across all users
    const { rowCount } = await pool.query('DELETE FROM rm_user_clips');

    console.log(`Cleared ${rowCount} clips across ${users} users.`);
    console.log('Nightly clipper reset complete.');
  } catch (err) {
    console.error('Nightly clipper reset error:', err);
    process.exit(1);
  }

  await pool.end();
}

main().catch((err) => {
  console.error('Fatal error:', err);
  process.exit(1);
});
