diff --git a/octofit-tracker/backend/dist/index.js b/octofit-tracker/backend/dist/index.js index e3ffb18..150bcba 100644 --- a/octofit-tracker/backend/dist/index.js +++ b/octofit-tracker/backend/dist/index.js @@ -1,92 +1,3 @@ "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; Object.defineProperty(exports, "__esModule", { value: true }); -const express_1 = __importDefault(require("express")); -const Activity_1 = require("./models/Activity"); -const database_1 = require("./config/database"); -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 app = (0, express_1.default)(); -const port = Number(process.env.PORT) || 8000; -const codespaceName = process.env.CODESPACE_NAME; -const baseUrl = codespaceName - ? `https://${codespaceName}-8000.app.github.dev` - : `http://localhost:${port}`; -app.use(express_1.default.json()); -app.get("/health", (_req, res) => { - res.status(200).json({ status: "ok", baseUrl }); -}); -app.get("/api/users/", async (_req, res) => { - try { - const items = await User_1.UserModel.find().sort({ createdAt: -1 }).lean(); - res.status(200).json({ resource: "users", count: items.length, items }); - } - catch (error) { - res.status(500).json({ message: "Failed to fetch users", error }); - } -}); -app.get("/api/teams/", async (_req, res) => { - try { - const items = await Team_1.TeamModel.find() - .populate("captain", "username email") - .populate("members", "username email") - .sort({ createdAt: -1 }) - .lean(); - res.status(200).json({ resource: "teams", count: items.length, items }); - } - catch (error) { - res.status(500).json({ message: "Failed to fetch teams", error }); - } -}); -app.get("/api/activities/", async (_req, res) => { - try { - const items = await Activity_1.ActivityModel.find() - .populate("user", "username email") - .populate("team", "name city") - .sort({ completedAt: -1 }) - .lean(); - res.status(200).json({ resource: "activities", count: items.length, items }); - } - catch (error) { - res.status(500).json({ message: "Failed to fetch activities", error }); - } -}); -app.get("/api/leaderboard/", async (_req, res) => { - try { - const items = await Leaderboard_1.LeaderboardModel.find() - .populate("entries.user", "username email") - .populate("entries.team", "name city") - .sort({ generatedAt: -1 }) - .lean(); - res.status(200).json({ resource: "leaderboard", count: items.length, items }); - } - catch (error) { - res.status(500).json({ message: "Failed to fetch leaderboard", error }); - } -}); -app.get("/api/workouts/", async (_req, res) => { - try { - const items = await Workout_1.WorkoutModel.find().sort({ createdAt: -1 }).lean(); - res.status(200).json({ resource: "workouts", count: items.length, items }); - } - catch (error) { - res.status(500).json({ message: "Failed to fetch workouts", error }); - } -}); -const start = async () => { - try { - await (0, database_1.connectDatabase)(); - app.listen(port, () => { - console.log(`OctoFit backend listening on ${baseUrl}`); - }); - } - catch (error) { - console.error("Failed to start backend:", error); - process.exit(1); - } -}; -void start(); +require("./server"); diff --git a/octofit-tracker/backend/dist/server.js b/octofit-tracker/backend/dist/server.js new file mode 100644 index 0000000..44c176e --- /dev/null +++ b/octofit-tracker/backend/dist/server.js @@ -0,0 +1,97 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.start = exports.port = exports.baseUrl = exports.app = void 0; +const express_1 = __importDefault(require("express")); +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 app = (0, express_1.default)(); +exports.app = app; +const port = Number(process.env.PORT) || 8000; +exports.port = port; +const codespaceName = process.env.CODESPACE_NAME; +const baseUrl = codespaceName + ? `https://${codespaceName}-8000.app.github.dev` + : `http://localhost:${port}`; +exports.baseUrl = baseUrl; +app.use(express_1.default.json()); +app.get("/health", (_req, res) => { + res.status(200).json({ status: "ok", baseUrl }); +}); +app.get("/api/users/", async (_req, res) => { + try { + const items = await User_1.UserModel.find().sort({ createdAt: -1 }).lean(); + res.status(200).json({ resource: "users", count: items.length, items }); + } + catch (error) { + res.status(500).json({ message: "Failed to fetch users", error }); + } +}); +app.get("/api/teams/", async (_req, res) => { + try { + const items = await Team_1.TeamModel.find() + .populate("captain", "username email") + .populate("members", "username email") + .sort({ createdAt: -1 }) + .lean(); + res.status(200).json({ resource: "teams", count: items.length, items }); + } + catch (error) { + res.status(500).json({ message: "Failed to fetch teams", error }); + } +}); +app.get("/api/activities/", async (_req, res) => { + try { + const items = await Activity_1.ActivityModel.find() + .populate("user", "username email") + .populate("team", "name city") + .sort({ completedAt: -1 }) + .lean(); + res.status(200).json({ resource: "activities", count: items.length, items }); + } + catch (error) { + res.status(500).json({ message: "Failed to fetch activities", error }); + } +}); +app.get("/api/leaderboard/", async (_req, res) => { + try { + const items = await Leaderboard_1.LeaderboardModel.find() + .populate("entries.user", "username email") + .populate("entries.team", "name city") + .sort({ generatedAt: -1 }) + .lean(); + res.status(200).json({ resource: "leaderboard", count: items.length, items }); + } + catch (error) { + res.status(500).json({ message: "Failed to fetch leaderboard", error }); + } +}); +app.get("/api/workouts/", async (_req, res) => { + try { + const items = await Workout_1.WorkoutModel.find().sort({ createdAt: -1 }).lean(); + res.status(200).json({ resource: "workouts", count: items.length, items }); + } + catch (error) { + res.status(500).json({ message: "Failed to fetch workouts", error }); + } +}); +const start = async () => { + try { + await (0, database_1.connectDatabase)(); + app.listen(port, () => { + console.log(`OctoFit backend listening on ${baseUrl}`); + }); + } + catch (error) { + console.error("Failed to start backend:", error); + process.exit(1); + } +}; +exports.start = start; +void start(); diff --git a/octofit-tracker/backend/src/index.ts b/octofit-tracker/backend/src/index.ts index f581a95..7f8b957 100644 --- a/octofit-tracker/backend/src/index.ts +++ b/octofit-tracker/backend/src/index.ts @@ -1,91 +1 @@ -import express from "express"; -import { ActivityModel } from "./models/Activity"; -import { connectDatabase } from "./config/database"; -import { LeaderboardModel } from "./models/Leaderboard"; -import { TeamModel } from "./models/Team"; -import { UserModel } from "./models/User"; -import { WorkoutModel } from "./models/Workout"; - -const app = express(); -const port = Number(process.env.PORT) || 8000; -const codespaceName = process.env.CODESPACE_NAME; -const baseUrl = codespaceName - ? `https://${codespaceName}-8000.app.github.dev` - : `http://localhost:${port}`; - -app.use(express.json()); - -app.get("/health", (_req, res) => { - res.status(200).json({ status: "ok", baseUrl }); -}); - -app.get("/api/users/", async (_req, res) => { - try { - const items = await UserModel.find().sort({ createdAt: -1 }).lean(); - res.status(200).json({ resource: "users", count: items.length, items }); - } catch (error) { - res.status(500).json({ message: "Failed to fetch users", error }); - } -}); - -app.get("/api/teams/", async (_req, res) => { - try { - const items = await TeamModel.find() - .populate("captain", "username email") - .populate("members", "username email") - .sort({ createdAt: -1 }) - .lean(); - res.status(200).json({ resource: "teams", count: items.length, items }); - } catch (error) { - res.status(500).json({ message: "Failed to fetch teams", error }); - } -}); - -app.get("/api/activities/", async (_req, res) => { - try { - const items = await ActivityModel.find() - .populate("user", "username email") - .populate("team", "name city") - .sort({ completedAt: -1 }) - .lean(); - res.status(200).json({ resource: "activities", count: items.length, items }); - } catch (error) { - res.status(500).json({ message: "Failed to fetch activities", error }); - } -}); - -app.get("/api/leaderboard/", async (_req, res) => { - try { - const items = await LeaderboardModel.find() - .populate("entries.user", "username email") - .populate("entries.team", "name city") - .sort({ generatedAt: -1 }) - .lean(); - res.status(200).json({ resource: "leaderboard", count: items.length, items }); - } catch (error) { - res.status(500).json({ message: "Failed to fetch leaderboard", error }); - } -}); - -app.get("/api/workouts/", async (_req, res) => { - try { - const items = await WorkoutModel.find().sort({ createdAt: -1 }).lean(); - res.status(200).json({ resource: "workouts", count: items.length, items }); - } catch (error) { - res.status(500).json({ message: "Failed to fetch workouts", error }); - } -}); - -const start = async () => { - try { - await connectDatabase(); - app.listen(port, () => { - console.log(`OctoFit backend listening on ${baseUrl}`); - }); - } catch (error) { - console.error("Failed to start backend:", error); - process.exit(1); - } -}; - -void start(); +import "./server"; diff --git a/octofit-tracker/backend/src/server.ts b/octofit-tracker/backend/src/server.ts new file mode 100644 index 0000000..d6c3fd3 --- /dev/null +++ b/octofit-tracker/backend/src/server.ts @@ -0,0 +1,93 @@ +import express from "express"; +import { connectDatabase } from "./config/database"; +import { ActivityModel } from "./models/Activity"; +import { LeaderboardModel } from "./models/Leaderboard"; +import { TeamModel } from "./models/Team"; +import { UserModel } from "./models/User"; +import { WorkoutModel } from "./models/Workout"; + +const app = express(); +const port = Number(process.env.PORT) || 8000; +const codespaceName = process.env.CODESPACE_NAME; +const baseUrl = codespaceName + ? `https://${codespaceName}-8000.app.github.dev` + : `http://localhost:${port}`; + +app.use(express.json()); + +app.get("/health", (_req, res) => { + res.status(200).json({ status: "ok", baseUrl }); +}); + +app.get("/api/users/", async (_req, res) => { + try { + const items = await UserModel.find().sort({ createdAt: -1 }).lean(); + res.status(200).json({ resource: "users", count: items.length, items }); + } catch (error) { + res.status(500).json({ message: "Failed to fetch users", error }); + } +}); + +app.get("/api/teams/", async (_req, res) => { + try { + const items = await TeamModel.find() + .populate("captain", "username email") + .populate("members", "username email") + .sort({ createdAt: -1 }) + .lean(); + res.status(200).json({ resource: "teams", count: items.length, items }); + } catch (error) { + res.status(500).json({ message: "Failed to fetch teams", error }); + } +}); + +app.get("/api/activities/", async (_req, res) => { + try { + const items = await ActivityModel.find() + .populate("user", "username email") + .populate("team", "name city") + .sort({ completedAt: -1 }) + .lean(); + res.status(200).json({ resource: "activities", count: items.length, items }); + } catch (error) { + res.status(500).json({ message: "Failed to fetch activities", error }); + } +}); + +app.get("/api/leaderboard/", async (_req, res) => { + try { + const items = await LeaderboardModel.find() + .populate("entries.user", "username email") + .populate("entries.team", "name city") + .sort({ generatedAt: -1 }) + .lean(); + res.status(200).json({ resource: "leaderboard", count: items.length, items }); + } catch (error) { + res.status(500).json({ message: "Failed to fetch leaderboard", error }); + } +}); + +app.get("/api/workouts/", async (_req, res) => { + try { + const items = await WorkoutModel.find().sort({ createdAt: -1 }).lean(); + res.status(200).json({ resource: "workouts", count: items.length, items }); + } catch (error) { + res.status(500).json({ message: "Failed to fetch workouts", error }); + } +}); + +const start = async () => { + try { + await connectDatabase(); + app.listen(port, () => { + console.log(`OctoFit backend listening on ${baseUrl}`); + }); + } catch (error) { + console.error("Failed to start backend:", error); + process.exit(1); + } +}; + +export { app, baseUrl, port, start }; + +void start(); \ No newline at end of file