1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
const Team = struct {
team_id: i16,
rank: ?i16,
name: []const u8,
division: []const u8,
pick_user: ?[]const u8,
};
const DraftInfo = struct {
draft_id: i32,
current_picker: i32,
status: []const u8,
league: []const u8,
round_time_remaining: ?i32,
message: []const u8,
can_pick: bool,
};
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 * FROM current_draft_picks($1)";
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.templates.get("pick").? }, .{
.teams = teams,
.draft_info = draft_info,
.draft_id = draft_info.draft_id,
}, 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");
|