aboutsummaryrefslogtreecommitdiffstats
path: root/src/web/leagues/create.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/web/leagues/create.zig')
-rw-r--r--src/web/leagues/create.zig78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/web/leagues/create.zig b/src/web/leagues/create.zig
new file mode 100644
index 0000000..66352cc
--- /dev/null
+++ b/src/web/leagues/create.zig
@@ -0,0 +1,78 @@
+const League = struct {
+ name: []const u8,
+};
+
+const LeaguePickScore = struct {
+ league_id: i32,
+ team: []const u8,
+ player: []const u8,
+ win: i32,
+ playoffs: ?i16,
+ divisional: ?i16,
+ conference: ?i16,
+ superbowl: ?i16,
+ champion: ?i16,
+ total: i32,
+};
+
+const PlayerScore = struct {
+ league_id: i32,
+ player: []const u8,
+ score: i32,
+};
+
+pub fn handler(env: *Env, req: *httpz.Request, res: *httpz.Response) !void {
+ if (req.params.get("id")) |league_id| {
+ var league: League = undefined;
+ const league_query =
+ \\SELECT name FROM leagues WHERE league_id = $1
+ ;
+ {
+ const row = try env.app.pool.row(league_query, .{league_id});
+ if (row) |r| {
+ league = try r.to(League, .{});
+ }
+ }
+
+ const scores_query =
+ \\SELECT * FROM league_pick_scores WHERE league_id = $1
+ ;
+ var scores_result = try env.app.pool.query(scores_query, .{league_id});
+ defer scores_result.deinit();
+
+ var scores: [32]LeaguePickScore = undefined;
+ {
+ var i: u8 = 0;
+ while (try scores_result.next()) |row| : (i += 1) {
+ const score = try row.to(LeaguePickScore, .{});
+ scores[i] = score;
+ }
+ }
+
+ const player_scores_query =
+ \\SELECT * FROM player_scores WHERE league_id = $1
+ ;
+ var player_scores_result = try env.app.pool.query(player_scores_query, .{league_id});
+ defer player_scores_result.deinit();
+
+ var player_scores: [2]PlayerScore = undefined;
+ {
+ var i: u8 = 0;
+ while (try player_scores_result.next()) |row| : (i += 1) {
+ const score = try row.to(PlayerScore, .{});
+ player_scores[i] = score;
+ }
+ }
+
+ try web.renderWithData("league", .{
+ .league = league,
+ .scores = scores,
+ .player_scores = player_scores,
+ }, req, res);
+ }
+}
+
+const httpz = @import("httpz");
+const Env = @import("../../env.zig").Env;
+const web = @import("../../web/web.zig");
+const std = @import("std");