"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const database_1 = require("../config/database"); const Activity_1 = require("../models/Activity"); const Leaderboard_1 = require("../models/Leaderboard"); const Team_1 = require("../models/Team"); const User_1 = require("../models/User"); const Workout_1 = require("../models/Workout"); const seed = async () => { try { await (0, database_1.connectDatabase)(); console.log("Seed the octofit_db database with test data"); await Promise.all([ Activity_1.ActivityModel.deleteMany({}), Leaderboard_1.LeaderboardModel.deleteMany({}), Team_1.TeamModel.deleteMany({}), User_1.UserModel.deleteMany({}), Workout_1.WorkoutModel.deleteMany({}), ]); const users = await User_1.UserModel.insertMany([ { username: "alex_runner", email: "alex.runner@example.com", age: 29, heightCm: 178, weightKg: 74, fitnessGoal: "Half marathon in under 1h40", }, { username: "maya_lifter", email: "maya.lifter@example.com", age: 33, heightCm: 165, weightKg: 62, fitnessGoal: "Increase deadlift max to 140kg", }, { username: "liam_hiker", email: "liam.hiker@example.com", age: 26, heightCm: 182, weightKg: 79, fitnessGoal: "Improve endurance for alpine trekking", }, { username: "sofia_cycle", email: "sofia.cycle@example.com", age: 31, heightCm: 170, weightKg: 66, fitnessGoal: "Ride a 100km gran fondo", }, ]); const teams = await Team_1.TeamModel.insertMany([ { name: "Pulse Pacers", city: "Cluj-Napoca", captain: users[0]._id, members: [users[0]._id, users[2]._id], }, { name: "Iron Orbit", city: "Bucharest", captain: users[1]._id, members: [users[1]._id, users[3]._id], }, ]); await Workout_1.WorkoutModel.insertMany([ { title: "Tempo Run 8K", category: "Cardio", difficulty: "Intermediate", durationMinutes: 50, equipment: ["Running shoes", "Sports watch"], targetMuscles: ["Quadriceps", "Hamstrings", "Calves", "Core"], }, { title: "Barbell Strength Circuit", category: "Strength", difficulty: "Advanced", durationMinutes: 60, equipment: ["Barbell", "Weight plates", "Bench"], targetMuscles: ["Glutes", "Back", "Chest", "Shoulders"], }, { title: "Mobility and Recovery Flow", category: "Mobility", difficulty: "Beginner", durationMinutes: 30, equipment: ["Yoga mat", "Resistance band"], targetMuscles: ["Hips", "Lower back", "Shoulders"], }, ]); await Activity_1.ActivityModel.insertMany([ { user: users[0]._id, team: teams[0]._id, type: "Interval Run", durationMinutes: 42, caloriesBurned: 520, completedAt: new Date("2026-06-18T06:40:00.000Z"), }, { user: users[1]._id, team: teams[1]._id, type: "Heavy Strength Session", durationMinutes: 64, caloriesBurned: 610, completedAt: new Date("2026-06-18T18:20:00.000Z"), }, { user: users[2]._id, team: teams[0]._id, type: "Hill Hike", durationMinutes: 95, caloriesBurned: 780, completedAt: new Date("2026-06-19T07:10:00.000Z"), }, { user: users[3]._id, team: teams[1]._id, type: "Road Cycling", durationMinutes: 88, caloriesBurned: 845, completedAt: new Date("2026-06-19T16:05:00.000Z"), }, ]); await Leaderboard_1.LeaderboardModel.insertMany([ { period: "weekly-2026-W25", generatedAt: new Date("2026-06-20T00:00:00.000Z"), entries: [ { user: users[3]._id, team: teams[1]._id, points: 1280, rank: 1 }, { user: users[2]._id, team: teams[0]._id, points: 1225, rank: 2 }, { user: users[1]._id, team: teams[1]._id, points: 1160, rank: 3 }, { user: users[0]._id, team: teams[0]._id, points: 1095, rank: 4 }, ], }, ]); const counts = { users: await User_1.UserModel.countDocuments(), teams: await Team_1.TeamModel.countDocuments(), activities: await Activity_1.ActivityModel.countDocuments(), leaderboard: await Leaderboard_1.LeaderboardModel.countDocuments(), workouts: await Workout_1.WorkoutModel.countDocuments(), }; console.log("Seed complete", counts); } catch (error) { console.error("Seed failed", error); process.exitCode = 1; } finally { await (0, database_1.disconnectDatabase)(); } }; void seed();