const db = require("../models"); const { Op } = require("sequelize"); (async () => { try { const User = db.user; const Email = db.email; const EmailQueue = db.email_queue; // 1. Get all active users const users = await User.findAll({ where: { status: 1 } }); if (!users.length) { console.log("No active users found."); return; } // 2. Determine day and select emails const today = new Date(); const day = today.getDay(); // 0=Sun, 1=Mon, ... const isOddDay = day === 1 || day === 3 || day === 5; // Mon, Wed, Fri const emailWhere = isOddDay ? { id: { [Op.mod]: [2, 1] } } // odd ids : { id: { [Op.mod]: [2, 0] } }; // even ids const emails = await Email.findAll({ where: emailWhere }); if (!emails.length) { console.log("No emails found for today."); return; } // 3. For each user and email, insert into email_queue const tomorrow = new Date(today); tomorrow.setDate(today.getDate() + 1); const sendAt = tomorrow; let count = 0; for (const user of users) { for (const email of emails) { await EmailQueue.create({ email_id: email.id, user_id: user.id, status: 0, // not sent created_at: today, send_at: sendAt, updated_at: today, }); count++; } } console.log( `Inserted ${count} email_queue records for ${users.length} users and ${emails.length} emails.` ); process.exit(0); } catch (err) { console.error("Error in email_queue cronjob:", err); process.exit(1); } })();