const dotenv = require("dotenv"); const mongoose = require("mongoose"); const FamilyMember = require("../models/FamilyMember"); const Todo = require("../models/Todo"); const Schedule = require("../models/Schedule"); const Announcement = require("../models/Announcement"); const Photo = require("../models/Photo"); dotenv.config(); const connect = async () => { const mongoUri = process.env.MONGODB_URI; if (!mongoUri) { throw new Error("MONGODB_URI is not set"); } mongoose.set("strictQuery", true); await mongoose.connect(mongoUri); }; const seed = async () => { await Promise.all([ FamilyMember.deleteMany({}), Todo.deleteMany({}), Schedule.deleteMany({}), Announcement.deleteMany({}), Photo.deleteMany({}), ]); const family = await FamilyMember.insertMany([ { name: "Dad", emoji: ":)", color: "#0F766E", order: 1 }, { name: "Mom", emoji: "<3", color: "#C2410C", order: 2 }, { name: "Son", emoji: ":D", color: "#1D4ED8", order: 3 }, { name: "Daughter", emoji: ":-)", color: "#7C3AED", order: 4 }, ]); const now = new Date(); const today = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 9, 0); const tomorrow = new Date(today); tomorrow.setDate(today.getDate() + 1); await Todo.insertMany([ { familyMemberId: family[0]._id, title: "Grocery run", completed: false, dueDate: today, }, { familyMemberId: family[1]._id, title: "Team meeting", completed: false, dueDate: today, }, { familyMemberId: family[2]._id, title: "Math homework", completed: false, dueDate: today, }, { familyMemberId: family[3]._id, title: "Piano lesson", completed: false, dueDate: tomorrow, }, ]); await Schedule.insertMany([ { title: "Family dinner", description: "Everyone at home", startDate: today, endDate: new Date(today.getTime() + 2 * 60 * 60 * 1000), familyMemberId: family[0]._id, isAllDay: false, }, { title: "Soccer practice", description: "School field", startDate: new Date(today.getTime() + 4 * 60 * 60 * 1000), endDate: new Date(today.getTime() + 5 * 60 * 60 * 1000), familyMemberId: family[2]._id, isAllDay: false, }, ]); await Announcement.insertMany([ { title: "Weekend trip", content: "Pack light and be ready by 8 AM", priority: 2, active: true, }, { title: "Trash day", content: "Take out bins tonight", priority: 1, active: true, }, ]); await Photo.insertMany([ { url: "https://picsum.photos/1200/800?random=10", caption: "Summer vacation", active: true, }, { url: "https://picsum.photos/1200/800?random=11", caption: "Family hike", active: true, }, { url: "https://picsum.photos/1200/800?random=12", caption: "Birthday party", active: true, }, ]); }; connect() .then(seed) .then(() => { console.log("Seed data inserted"); return mongoose.disconnect(); }) .then(() => process.exit(0)) .catch((error) => { console.error("Seed failed", error); process.exit(1); });