aboutsummaryrefslogblamecommitdiffstats
path: root/src/web/picks/show.zig
blob: f802069c4d0614b9f2f3113e30189d2778cc5d9b (plain) (tree)

























































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