Files
learn-build-apps-copilot-agent/octofit-tracker/backend/dist/scripts/seed.js
T

158 lines
5.7 KiB
JavaScript

"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();