From 9c90c683c654c5043df9da0c120fc86dc4677a79 Mon Sep 17 00:00:00 2001 From: mitteneer Date: Sun, 22 Jun 2025 14:36:59 -0400 Subject: [PATCH 1/2] Temporary fix to keep using LLVM --- build.zig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.zig b/build.zig index 3bf89aa..3b17d0b 100644 --- a/build.zig +++ b/build.zig @@ -12,6 +12,8 @@ pub fn build(b: *std.Build) !void { .optimize = optimize, }); + exe.use_llvm = true; + // Example dependency: // const zig_time_dep = b.dependency("zeit", .{}); From 77a9c24dab83a576263e706e0fa5e6d2566cfdbd Mon Sep 17 00:00:00 2001 From: mitteneer Date: Sun, 22 Jun 2025 14:37:10 -0400 Subject: [PATCH 2/2] Create ratings tables --- src/app/database/Schema.zig | 65 ++++++++++++++++++- ...2025-06-22_18-32-57_create_songratings.zig | 22 +++++++ ...025-06-22_18-33-34_create_albumratings.zig | 22 +++++++ ...25-06-22_18-34-00_create_artistratings.zig | 22 +++++++ 4 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 src/app/database/migrations/2025-06-22_18-32-57_create_songratings.zig create mode 100644 src/app/database/migrations/2025-06-22_18-33-34_create_albumratings.zig create mode 100644 src/app/database/migrations/2025-06-22_18-34-00_create_artistratings.zig diff --git a/src/app/database/Schema.zig b/src/app/database/Schema.zig index 0a30a19..23a6897 100644 --- a/src/app/database/Schema.zig +++ b/src/app/database/Schema.zig @@ -97,7 +97,7 @@ pub const Scrobble = jetquery.Model( @This(), "scrobbles", struct { - id: i64, + id: i32, albumsong: i64, datetime: jetquery.DateTime, created_at: jetquery.DateTime, @@ -146,3 +146,66 @@ pub const Artistsong = jetquery.Model( }, }, ); + +pub const Albumrating = jetquery.Model( + @This(), + "albumratings", + struct { + id: i32, + album: i64, + rating: i16, + rating_text: []const u8, + date: jetquery.DateTime, + created_at: jetquery.DateTime, + updated_at: jetquery.DateTime, + }, + .{ + .relations = .{ + .album = jetquery.belongsTo(.Album, .{ + .foreign_key = "album", + }), + }, + }, +); + +pub const Artistrating = jetquery.Model( + @This(), + "artistratings", + struct { + id: i32, + artist: i64, + rating: i16, + rating_text: []const u8, + date: jetquery.DateTime, + created_at: jetquery.DateTime, + updated_at: jetquery.DateTime, + }, + .{ + .relations = .{ + .artist = jetquery.belongsTo(.Artist, .{ + .foreign_key = "artist", + }), + }, + }, +); + +pub const Songrating = jetquery.Model( + @This(), + "songratings", + struct { + id: i32, + song: i64, + rating: i16, + rating_text: []const u8, + date: jetquery.DateTime, + created_at: jetquery.DateTime, + updated_at: jetquery.DateTime, + }, + .{ + .relations = .{ + .albumsong = jetquery.belongsTo(.Albumsong, .{ + .foreign_key = "song", + }), + }, + }, +); diff --git a/src/app/database/migrations/2025-06-22_18-32-57_create_songratings.zig b/src/app/database/migrations/2025-06-22_18-32-57_create_songratings.zig new file mode 100644 index 0000000..1ddf750 --- /dev/null +++ b/src/app/database/migrations/2025-06-22_18-32-57_create_songratings.zig @@ -0,0 +1,22 @@ +const std = @import("std"); +const jetquery = @import("jetquery"); +const t = jetquery.schema.table; + +pub fn up(repo: anytype) !void { + try repo.createTable( + "songratings", + &.{ + t.primaryKey("id", .{}), + t.column("song", .bigint, .{ .reference = .{ "albumsongs", "id" } }), + t.column("rating", .smallint, .{}), + t.column("rating_text", .text, .{}), + t.column("date", .datetime, .{}), + t.timestamps(.{}), + }, + .{}, + ); +} + +pub fn down(repo: anytype) !void { + try repo.dropTable("songratings", .{}); +} diff --git a/src/app/database/migrations/2025-06-22_18-33-34_create_albumratings.zig b/src/app/database/migrations/2025-06-22_18-33-34_create_albumratings.zig new file mode 100644 index 0000000..187fdfb --- /dev/null +++ b/src/app/database/migrations/2025-06-22_18-33-34_create_albumratings.zig @@ -0,0 +1,22 @@ +const std = @import("std"); +const jetquery = @import("jetquery"); +const t = jetquery.schema.table; + +pub fn up(repo: anytype) !void { + try repo.createTable( + "albumratings", + &.{ + t.primaryKey("id", .{}), + t.column("album", .bigint, .{ .reference = .{ "albums", "id" } }), + t.column("rating", .smallint, .{}), + t.column("rating_text", .text, .{}), + t.column("date", .datetime, .{}), + t.timestamps(.{}), + }, + .{}, + ); +} + +pub fn down(repo: anytype) !void { + try repo.dropTable("albumratings", .{}); +} diff --git a/src/app/database/migrations/2025-06-22_18-34-00_create_artistratings.zig b/src/app/database/migrations/2025-06-22_18-34-00_create_artistratings.zig new file mode 100644 index 0000000..956d121 --- /dev/null +++ b/src/app/database/migrations/2025-06-22_18-34-00_create_artistratings.zig @@ -0,0 +1,22 @@ +const std = @import("std"); +const jetquery = @import("jetquery"); +const t = jetquery.schema.table; + +pub fn up(repo: anytype) !void { + try repo.createTable( + "artistratings", + &.{ + t.primaryKey("id", .{}), + t.column("artist", .bigint, .{ .reference = .{ "artists", "id" } }), + t.column("rating", .smallint, .{}), + t.column("rating_text", .text, .{}), + t.column("date", .datetime, .{}), + t.timestamps(.{}), + }, + .{}, + ); +} + +pub fn down(repo: anytype) !void { + try repo.dropTable("artistratings", .{}); +}