const Team = struct { team_id: i16, rank: ?i16, name: []const u8, division: []const u8, username: ?[]const u8, }; const DraftInfo = struct { draft_id: i32, current_picker: i32, status: []const u8, round_time_remaining: ?i32, message: []const u8, }; pub fn handler(env: *Env, req: *httpz.Request, res: *httpz.Response) !void { if (req.params.get("id")) |draft_id| { _ = try env.app.pool.exec("CALL auto_draft($1)", .{draft_id}); const picks_query = \\SELECT cr.*, users.username from current_rankings cr \\LEFT JOIN picks ON cr.team_id = picks.team_id AND picks.draft_id = $1 \\LEFT JOIN league_users ON league_users.league_user_id = picks.league_user_id \\LEFT JOIN users ON users.user_id = league_users.user_id ; var picks_result = try env.app.pool.query(picks_query, .{draft_id}); defer picks_result.deinit(); var teams: [32]Team = undefined; var i: u8 = 0; while (try picks_result.next()) |row| : (i += 1) { const team = try row.to(Team, .{}); teams[i] = team; } var draft_info: DraftInfo = undefined; const current_picker_query = \\SELECT * FROM draft_info WHERE draft_id = $1 ; var row = try env.app.pool.row(current_picker_query, .{draft_id}); if (row) |r| { draft_info = try r.to(DraftInfo, .{}); } try web.renderWithDataPartials("draft", .{ "pick", web.pick_template }, .{ .teams = teams, .draft_info = draft_info, .can_pick = if (draft_info.round_time_remaining) |_| true else false, }, req, res); try row.?.deinit(); } } const httpz = @import("httpz"); const Env = @import("../../env.zig").Env; const web = @import("../../web/web.zig"); const std = @import("std");