aboutsummaryrefslogtreecommitdiffstats
path: root/src/web/picks/show.zig
diff options
context:
space:
mode:
authorsadbeast <sadbeast@sadbeast.com>2024-06-23 15:36:59 -0700
committersadbeast <sadbeast@sadbeast.com>2024-07-13 21:58:23 -0700
commit8d018d996c1eddb882dc64ebbd228bb0135944f3 (patch)
treed01956546a77dbae33357c9a5d174f511ac9b282 /src/web/picks/show.zig
downloadteamdraft-main.tar.gz
teamdraft-main.tar.bz2
Diffstat (limited to 'src/web/picks/show.zig')
-rw-r--r--src/web/picks/show.zig58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/web/picks/show.zig b/src/web/picks/show.zig
new file mode 100644
index 0000000..f802069
--- /dev/null
+++ b/src/web/picks/show.zig
@@ -0,0 +1,58 @@
+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");