const express = require("express"); const teamsController = require("../controllers/team"); const {loadRecentAndUpcomingEvents} = require("../middlewares/bulkload") const { load } = require("dotenv"); const router = express.Router(); const tsUtils = require('../lib/utils') const {teamsnapCallback} = require('../lib/utils') // Middleware const loadTeam = async (req,res,next) => { const {team_id} = req.params; req.team = await teamsnap.loadTeam( team_id, (err, result) => {teamsnapCallback(err, result, {req, source: 'loadTeam', method: 'loadTeam'})} ) const bulkLoadTypes = ['teamMediaGroup', 'teamPreferences', 'member']; const items = tsUtils.groupTeamsnapItems(teamsnap.getAllItems(), bulkLoadTypes) if (req.session.current_team_id == null || req.session.current_team_id != team_id || bulkLoadTypes.filter(t=> !items[t] || items[t].length==0).length > 0){ req.promises.push(teamsnap.bulkLoad( team_id, bulkLoadTypes, (err,items) => {teamsnapCallback(err, items, {req, source: 'loadTeam', method: 'bulkLoad'})} ) .then(bulkLoadItems=>{ const items = tsUtils.groupTeamsnapItems(bulkLoadItems, bulkLoadTypes) req.members = items.members; req.team_media_group = items.teamMediaGroups?.pop(); req.team_preferences = items.teamsPreferences.pop(); req.session.current_team_id = req.team.id; } ) ) } else { req.members = items.member; req.team_media_group = items.teamMediaGroup.pop(); req.team_preferences = items.teamPreferences.pop(); } next(); } router.use("/:team_id([0-9]+)", loadTeam) // Routes router.get('/user/:user_id/teams', teamsController.getTeams) router.get("/:team_id([0-9]+)/home", loadRecentAndUpcomingEvents, teamsController.getTeamHome); module.exports = {router, loadTeam}