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