const League = struct { name: []const u8, }; const LeaguePickScore = struct { season_id: i32, league_id: i32, team: []const u8, player: []const u8, win: i32, playoffs: ?i16, divisional: ?i16, conference: ?i16, superbowl: ?i16, champion: ?i16, total: i32, }; const PlayerScore = struct { player: []const u8, score: i32, }; pub fn handler(env: *Env, req: *httpz.Request, res: *httpz.Response) !void { if (req.params.get("id")) |league_id| { const query = try req.query(); var league: League = undefined; const league_query = \\SELECT name FROM leagues WHERE league_id = $1 ; var league_result = (try env.app.pool.row(league_query, .{league_id})) orelse { res.status = 404; return; }; defer league_result.deinit() catch {}; league = try league_result.to(League, .{}); var team_scores_result: *pg.Result = undefined; var player_scores_result: *pg.Result = undefined; if (query.get("season")) |season_id| { player_scores_result = try env.app.pool.query("SELECT player, score FROM season_player_scores WHERE league_id = $1 AND season_id = season_id_by_year($2)", .{ league_id, season_id }); team_scores_result = try env.app.pool.query("SELECT * FROM league_scores WHERE league_id = $1 AND season_id = season_id_by_year($2)", .{ league_id, season_id }); } else { player_scores_result = try env.app.pool.query("SELECT player, score FROM current_player_scores WHERE league_id = $1", .{league_id}); team_scores_result = try env.app.pool.query("SELECT * FROM league_scores WHERE league_id = $1 AND season_id = current_season()", .{league_id}); } defer player_scores_result.deinit(); defer team_scores_result.deinit(); var scores: [32]LeaguePickScore = undefined; var score_count: u8 = 0; while (try team_scores_result.next()) |row| : (score_count += 1) { const score = try row.to(LeaguePickScore, .{ .dupe = true }); scores[score_count] = score; } var player_scores: [2]PlayerScore = undefined; { var i: u8 = 0; while (try player_scores_result.next()) |row| : (i += 1) { const score = try row.to(PlayerScore, .{}); player_scores[i] = score; } } try web.renderWithData("league", .{ .league = league, .scores = scores[0..score_count], .player_scores = player_scores, }, req, res); } } const httpz = @import("httpz"); const pg = @import("pg"); const Env = @import("../../env.zig").Env; const web = @import("../../web/web.zig"); const std = @import("std");