From 77a9c24dab83a576263e706e0fa5e6d2566cfdbd Mon Sep 17 00:00:00 2001 From: mitteneer Date: Sun, 22 Jun 2025 14:37:10 -0400 Subject: [PATCH] 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", .{}); +}