From 473abaf564df962cd4d4d06f5b8baa6dd9133c92 Mon Sep 17 00:00:00 2001 From: mitteneer Date: Mon, 17 Feb 2025 23:05:56 -0500 Subject: [PATCH] Restart database It's been 0 days since I've last retsrated the database --- src/app/database/Schema.zig | 252 ++++++------------ ...24-11-15_17-52-28_create_artist_albums.zig | 20 -- .../2024-11-20_19-08-02_create_albums.zig | 26 -- ...24-11-25_15-32-40_create_raw_scrobbles.zig | 22 -- ... => 2025-02-17_22-38-40_create_albums.zig} | 8 +- ...=> 2025-02-17_22-38-41_create_aliases.zig} | 0 ...=> 2025-02-17_22-38-42_create_artists.zig} | 4 +- ...25-02-17_22-38-43_create_masteralbums.zig} | 7 +- ...025-02-17_22-38-44_create_mastersongs.zig} | 7 +- ...=> 2025-02-17_22-38-45_create_ratings.zig} | 0 ... 2025-02-17_22-38-46_create_scrobbles.zig} | 3 +- ...g => 2025-02-17_22-38-47_create_songs.zig} | 6 +- src/app/jobs/process_scrobbles.zig | 2 +- 13 files changed, 93 insertions(+), 264 deletions(-) delete mode 100644 src/app/database/migrations/2024-11-15_17-52-28_create_artist_albums.zig delete mode 100644 src/app/database/migrations/2024-11-20_19-08-02_create_albums.zig delete mode 100644 src/app/database/migrations/2024-11-25_15-32-40_create_raw_scrobbles.zig rename src/app/database/migrations/{2024-11-15_17-52-54_create_album_songs.zig => 2025-02-17_22-38-40_create_albums.zig} (65%) rename src/app/database/migrations/{2024-11-21_21-51-38_create_aliases.zig => 2025-02-17_22-38-41_create_aliases.zig} (100%) rename src/app/database/migrations/{2024-11-15_14-46-12_create_artists.zig => 2025-02-17_22-38-42_create_artists.zig} (73%) rename src/app/database/migrations/{2024-11-21_23-49-05_create_concerts.zig => 2025-02-17_22-38-43_create_masteralbums.zig} (66%) rename src/app/database/migrations/{2024-11-15_17-52-04_create_artist_songs.zig => 2025-02-17_22-38-44_create_mastersongs.zig} (64%) rename src/app/database/migrations/{2024-11-21_21-51-03_create_ratings.zig => 2025-02-17_22-38-45_create_ratings.zig} (100%) rename src/app/database/migrations/{2024-11-30_15-40-39_create_scrobbles.zig => 2025-02-17_22-38-46_create_scrobbles.zig} (91%) rename src/app/database/migrations/{2024-11-15_14-58-47_create_songs.zig => 2025-02-17_22-38-47_create_songs.zig} (68%) diff --git a/src/app/database/Schema.zig b/src/app/database/Schema.zig index 560ab3c..8341118 100644 --- a/src/app/database/Schema.zig +++ b/src/app/database/Schema.zig @@ -1,190 +1,94 @@ const jetquery = @import("jetzig").jetquery; -pub const AlbumSong = jetquery.Model( - @This(), - "album_songs", - struct { - id: i32, - album_id: i32, - song_id: i32, - created_at: jetquery.DateTime, - updated_at: jetquery.DateTime, - }, - .{}, -); - pub const Album = jetquery.Model( @This(), "albums", - struct { - id: i32, - title: []const u8, - song_num: i32, - length: f32, - play_count: i32, - holiday: bool, - compilation: bool, - deluxe: bool, - live: bool, - created_at: jetquery.DateTime, - updated_at: jetquery.DateTime, - }, - .{ - .relations = .{ - .scrobbles = jetquery.hasMany(.Scrobble, .{}), - .ratings = jetquery.hasMany(.Ratings, .{}), - .aliases = jetquery.hasMany(.Aliases, .{}), - .songs = jetquery.hasMany(.AlbumSongs, .{}), - .artists = jetquery.hasMany(.ArtistAlbums, .{}), - }, - }, -); - -pub const ArtistAlbum = jetquery.Model( - @This(), - "artist_albums", - struct { - id: i32, - artist_id: i32, - album_id: i32, - created_at: jetquery.DateTime, - updated_at: jetquery.DateTime, - }, - .{}, -); - -pub const ArtistSong = jetquery.Model( - @This(), - "artist_songs", - struct { - id: i32, - artist_id: i32, - song_id: i32, - created_at: jetquery.DateTime, - updated_at: jetquery.DateTime, - }, - .{}, -); - -pub const Artist = jetquery.Model( - @This(), - "artists", struct { id: i32, name: []const u8, - album_num: i32, - song_num: i32, - play_count: i32, - created_at: jetquery.DateTime, - updated_at: jetquery.DateTime, - }, - .{ - .relations = .{ - .scrobbles = jetquery.hasMany(.Scrobble, .{}), - .aliases = jetquery.hasMany(.Aliases, .{}), - .concerts = jetquery.hasMany(.Concerts, .{}), - .songs = jetquery.hasMany(.ArtistSongs, .{}), - .albums = jetquery.hasMany(.ArtistAlbums, .{}), - }, - }, -); - -pub const Scrobble = jetquery.Model( - @This(), - "scrobbles", - struct { - id: i32, - date: jetquery.DateTime, - song_id: i32, - album_id: ?i32, - artist_id: i32, - created_at: jetquery.DateTime, - updated_at: jetquery.DateTime, - }, - .{ - .relations = .{ - .song = jetquery.belongsTo(.Song, .{}), - .album = jetquery.belongsTo(.Album, .{}), - .artist = jetquery.belongsTo(.Artist, .{}), - }, - }, -); - -pub const Song = jetquery.Model( - @This(), - "songs", - struct { - id: i32, - title: []const u8, - length: f32, - hidden: bool, - holiday: bool, - play_count: i32, - created_at: jetquery.DateTime, - updated_at: jetquery.DateTime, - }, - .{ - .relations = .{ - .scrobbles = jetquery.hasMany(.Scrobble, .{}), - .ratings = jetquery.hasMany(.Ratings, .{}), - .aliases = jetquery.hasMany(.Aliases, .{}), - .artists = jetquery.hasMany(.ArtistSongs, .{}), - .albums = jetquery.hasMany(.AlbumSongs, .{}), - }, - }, -); - -pub const Alias = jetquery.Model( - @This(), - "aliases", - struct { - id: i32, - reference_id: i32, - alias: []const u8, + length: ?f32, created_at: jetquery.DateTime, updated_at: jetquery.DateTime, }, .{}, ); -pub const Concert = jetquery.Model( - @This(), - "concerts", - struct { - id: i32, - location: []const u8, - date: jetquery.DateTime, - created_at: jetquery.DateTime, - updated_at: jetquery.DateTime, - }, - .{}, -); +pub const Alias = jetquery.Model(@This(), "aliases", struct { + id: i32, + reference_id: i32, + alias: []const u8, + created_at: jetquery.DateTime, + updated_at: jetquery.DateTime, +}, .{}); -pub const Rating = jetquery.Model( - @This(), - "ratings", - struct { - id: i32, - reference_id: i32, - score: f32, - date: jetquery.DateTime, - created_at: jetquery.DateTime, - updated_at: jetquery.DateTime, - }, - .{}, -); +pub const Artist = jetquery.Model(@This(), "artists", struct { + id: i32, + name: []const u8, + descriptive_string: []const u8, + created_at: jetquery.DateTime, + updated_at: jetquery.DateTime, +}, .{ .relations = .{ + .scrobbles = jetquery.hasMany(.Scrobble, .{}), + .aliases = jetquery.hasMany(.Alias, .{}), + .songs = jetquery.hasMany(.Song, .{}), + .albums = jetquery.hasMany(.Album, .{}), +} }); -pub const RawScrobble = jetquery.Model( - @This(), - "raw_scrobbles", - struct { - id: i32, - track: []const u8, - artist: []const u8, - album: []const u8, - date: jetquery.DateTime, - created_at: jetquery.DateTime, - updated_at: jetquery.DateTime, - }, - .{}, -); +pub const Masteralbum = jetquery.Model(@This(), "masteralbums", struct { + id: i32, + name: []const u8, + created_at: jetquery.DateTime, + updated_at: jetquery.DateTime, +}, .{ .relations = .{ + .albums = jetquery.hasMny(.Album, .{}), +} }); + +pub const Mastersong = jetquery.Model(@This(), "mastersongs", struct { + id: i32, + name: []const u8, + created_at: jetquery.DateTime, + updated_at: jetquery.DateTime, +}, .{ .relations = .{ + .songs = jetquery.hasMany(.Song, .{}), +} }); + +pub const Rating = jetquery.Model(@This(), "ratings", struct { + id: i32, + reference_id: i32, + score: f32, + date: jetquery.DateTime, + created_at: jetquery.DateTime, + updated_at: jetquery.DateTime, +}, .{ .relations = .{ + .song = jetquery.belongsTo(.Song, .{}), + .album = jetquery.belongsTo(.Album, .{}), + .artist = jetquery.belongsTo(.Artist, .{}), +} }); + +pub const Scrobble = jetquery.Model(@This(), "scrobbles", struct { + id: i32, + song_id: i32, + album_id: ?i32, + date: jetquery.DateTime, + created_at: jetquery.DateTime, + updated_at: jetquery.DateTime, +}, .{ .relations = .{ + .song = jetquery.belongsTo(.Song, .{}), + .album = jetquery.belongsTo(.Album, .{}), + .artists = jetquery.hasMany(.Artist, .{}), +} }); + +pub const Song = jetquery.Model(@This(), "songs", struct { + id: i32, + name: []const u8, + length: ?f32, + hidden: bool, + created_at: jetquery.DateTime, + updated_at: jetquery.DateTime, +}, .{ .relations = .{ + .scrobbles = jetquery.hasMany(.Scrobble, .{}), + .ratings = jetquery.hasMany(.Rating, .{}), + .aliases = jetquery.hasMany(.Alias, .{}), + .artists = jetquery.hasMany(.Artist, .{}), + .albums = jetquery.hasMany(.Album, .{}), +} }); diff --git a/src/app/database/migrations/2024-11-15_17-52-28_create_artist_albums.zig b/src/app/database/migrations/2024-11-15_17-52-28_create_artist_albums.zig deleted file mode 100644 index 3e186ad..0000000 --- a/src/app/database/migrations/2024-11-15_17-52-28_create_artist_albums.zig +++ /dev/null @@ -1,20 +0,0 @@ -const std = @import("std"); -const jetquery = @import("jetquery"); -const t = jetquery.schema.table; - -pub fn up(repo: anytype) !void { - try repo.createTable( - "artist_albums", - &.{ - t.primaryKey("id", .{}), - t.column("artist_id", .integer, .{}), - t.column("album_id", .integer, .{}), - t.timestamps(.{}), - }, - .{}, - ); -} - -pub fn down(repo: anytype) !void { - try repo.dropTable("artist_albums", .{}); -} diff --git a/src/app/database/migrations/2024-11-20_19-08-02_create_albums.zig b/src/app/database/migrations/2024-11-20_19-08-02_create_albums.zig deleted file mode 100644 index a18ca74..0000000 --- a/src/app/database/migrations/2024-11-20_19-08-02_create_albums.zig +++ /dev/null @@ -1,26 +0,0 @@ -const std = @import("std"); -const jetquery = @import("jetquery"); -const t = jetquery.schema.table; - -pub fn up(repo: anytype) !void { - try repo.createTable( - "albums", - &.{ - t.primaryKey("id", .{}), - t.column("title", .string, .{}), - t.column("song_num", .integer, .{}), - t.column("length", .float, .{}), - t.column("play_count", .integer, .{}), - t.column("holiday", .boolean, .{}), - t.column("compilation", .boolean, .{}), - t.column("deluxe", .boolean, .{}), - t.column("live", .boolean, .{}), - t.timestamps(.{}), - }, - .{}, - ); -} - -pub fn down(repo: anytype) !void { - try repo.dropTable("albums", .{}); -} diff --git a/src/app/database/migrations/2024-11-25_15-32-40_create_raw_scrobbles.zig b/src/app/database/migrations/2024-11-25_15-32-40_create_raw_scrobbles.zig deleted file mode 100644 index e4264d3..0000000 --- a/src/app/database/migrations/2024-11-25_15-32-40_create_raw_scrobbles.zig +++ /dev/null @@ -1,22 +0,0 @@ -const std = @import("std"); -const jetquery = @import("jetquery"); -const t = jetquery.schema.table; - -pub fn up(repo: anytype) !void { - try repo.createTable( - "raw_scrobbles", - &.{ - t.primaryKey("id", .{}), - t.column("track", .string, .{}), - t.column("artist", .string, .{}), - t.column("album", .string, .{}), - t.column("date", .datetime, .{}), - t.timestamps(.{}), - }, - .{}, - ); -} - -pub fn down(repo: anytype) !void { - try repo.dropTable("raw_scrobbles", .{}); -} diff --git a/src/app/database/migrations/2024-11-15_17-52-54_create_album_songs.zig b/src/app/database/migrations/2025-02-17_22-38-40_create_albums.zig similarity index 65% rename from src/app/database/migrations/2024-11-15_17-52-54_create_album_songs.zig rename to src/app/database/migrations/2025-02-17_22-38-40_create_albums.zig index 9462f82..d706cfe 100644 --- a/src/app/database/migrations/2024-11-15_17-52-54_create_album_songs.zig +++ b/src/app/database/migrations/2025-02-17_22-38-40_create_albums.zig @@ -4,11 +4,11 @@ const t = jetquery.schema.table; pub fn up(repo: anytype) !void { try repo.createTable( - "album_songs", + "albums", &.{ t.primaryKey("id", .{}), - t.column("album_id", .integer, .{}), - t.column("song_id", .integer, .{}), + t.column("name", .string, .{}), + t.column("length", .float, .{ .optional = true }), t.timestamps(.{}), }, .{}, @@ -16,5 +16,5 @@ pub fn up(repo: anytype) !void { } pub fn down(repo: anytype) !void { - try repo.dropTable("album_songs", .{}); + try repo.dropTable("albums", .{}); } diff --git a/src/app/database/migrations/2024-11-21_21-51-38_create_aliases.zig b/src/app/database/migrations/2025-02-17_22-38-41_create_aliases.zig similarity index 100% rename from src/app/database/migrations/2024-11-21_21-51-38_create_aliases.zig rename to src/app/database/migrations/2025-02-17_22-38-41_create_aliases.zig diff --git a/src/app/database/migrations/2024-11-15_14-46-12_create_artists.zig b/src/app/database/migrations/2025-02-17_22-38-42_create_artists.zig similarity index 73% rename from src/app/database/migrations/2024-11-15_14-46-12_create_artists.zig rename to src/app/database/migrations/2025-02-17_22-38-42_create_artists.zig index db0ceae..2c92de4 100644 --- a/src/app/database/migrations/2024-11-15_14-46-12_create_artists.zig +++ b/src/app/database/migrations/2025-02-17_22-38-42_create_artists.zig @@ -8,9 +8,7 @@ pub fn up(repo: anytype) !void { &.{ t.primaryKey("id", .{}), t.column("name", .string, .{}), - t.column("album_num", .integer, .{}), - t.column("song_num", .integer, .{}), - t.column("play_count", .integer, .{}), + t.column("descriptive_string", .string, .{}), t.timestamps(.{}), }, .{}, diff --git a/src/app/database/migrations/2024-11-21_23-49-05_create_concerts.zig b/src/app/database/migrations/2025-02-17_22-38-43_create_masteralbums.zig similarity index 66% rename from src/app/database/migrations/2024-11-21_23-49-05_create_concerts.zig rename to src/app/database/migrations/2025-02-17_22-38-43_create_masteralbums.zig index 8eb782e..69e82de 100644 --- a/src/app/database/migrations/2024-11-21_23-49-05_create_concerts.zig +++ b/src/app/database/migrations/2025-02-17_22-38-43_create_masteralbums.zig @@ -4,11 +4,10 @@ const t = jetquery.schema.table; pub fn up(repo: anytype) !void { try repo.createTable( - "concerts", + "masteralbums", &.{ t.primaryKey("id", .{}), - t.column("location", .string, .{}), - t.column("date", .datetime, .{}), + t.column("name", .string, .{}), t.timestamps(.{}), }, .{}, @@ -16,5 +15,5 @@ pub fn up(repo: anytype) !void { } pub fn down(repo: anytype) !void { - try repo.dropTable("concerts", .{}); + try repo.dropTable("masteralbums", .{}); } diff --git a/src/app/database/migrations/2024-11-15_17-52-04_create_artist_songs.zig b/src/app/database/migrations/2025-02-17_22-38-44_create_mastersongs.zig similarity index 64% rename from src/app/database/migrations/2024-11-15_17-52-04_create_artist_songs.zig rename to src/app/database/migrations/2025-02-17_22-38-44_create_mastersongs.zig index 03f6ec4..050a467 100644 --- a/src/app/database/migrations/2024-11-15_17-52-04_create_artist_songs.zig +++ b/src/app/database/migrations/2025-02-17_22-38-44_create_mastersongs.zig @@ -4,11 +4,10 @@ const t = jetquery.schema.table; pub fn up(repo: anytype) !void { try repo.createTable( - "artist_songs", + "mastersongs", &.{ t.primaryKey("id", .{}), - t.column("artist_id", .integer, .{}), - t.column("song_id", .integer, .{}), + t.column("name", .string, .{}), t.timestamps(.{}), }, .{}, @@ -16,5 +15,5 @@ pub fn up(repo: anytype) !void { } pub fn down(repo: anytype) !void { - try repo.dropTable("artist_songs", .{}); + try repo.dropTable("mastersongs", .{}); } diff --git a/src/app/database/migrations/2024-11-21_21-51-03_create_ratings.zig b/src/app/database/migrations/2025-02-17_22-38-45_create_ratings.zig similarity index 100% rename from src/app/database/migrations/2024-11-21_21-51-03_create_ratings.zig rename to src/app/database/migrations/2025-02-17_22-38-45_create_ratings.zig diff --git a/src/app/database/migrations/2024-11-30_15-40-39_create_scrobbles.zig b/src/app/database/migrations/2025-02-17_22-38-46_create_scrobbles.zig similarity index 91% rename from src/app/database/migrations/2024-11-30_15-40-39_create_scrobbles.zig rename to src/app/database/migrations/2025-02-17_22-38-46_create_scrobbles.zig index ee4552f..ac9a04c 100644 --- a/src/app/database/migrations/2024-11-30_15-40-39_create_scrobbles.zig +++ b/src/app/database/migrations/2025-02-17_22-38-46_create_scrobbles.zig @@ -7,10 +7,9 @@ pub fn up(repo: anytype) !void { "scrobbles", &.{ t.primaryKey("id", .{}), - t.column("date", .datetime, .{}), t.column("song_id", .integer, .{}), t.column("album_id", .integer, .{ .optional = true }), - t.column("artist_id", .integer, .{}), + t.column("date", .datetime, .{}), t.timestamps(.{}), }, .{}, diff --git a/src/app/database/migrations/2024-11-15_14-58-47_create_songs.zig b/src/app/database/migrations/2025-02-17_22-38-47_create_songs.zig similarity index 68% rename from src/app/database/migrations/2024-11-15_14-58-47_create_songs.zig rename to src/app/database/migrations/2025-02-17_22-38-47_create_songs.zig index d34bc30..9a52b6b 100644 --- a/src/app/database/migrations/2024-11-15_14-58-47_create_songs.zig +++ b/src/app/database/migrations/2025-02-17_22-38-47_create_songs.zig @@ -7,11 +7,9 @@ pub fn up(repo: anytype) !void { "songs", &.{ t.primaryKey("id", .{}), - t.column("title", .string, .{}), - t.column("length", .float, .{}), + t.column("name", .string, .{}), + t.column("length", .float, .{ .optional = true }), t.column("hidden", .boolean, .{}), - t.column("holiday", .boolean, .{}), - t.column("play_count", .integer, .{}), t.timestamps(.{}), }, .{}, diff --git a/src/app/jobs/process_scrobbles.zig b/src/app/jobs/process_scrobbles.zig index 6e0c73d..ea43732 100644 --- a/src/app/jobs/process_scrobbles.zig +++ b/src/app/jobs/process_scrobbles.zig @@ -40,7 +40,7 @@ pub fn run(allocator: std.mem.Allocator, params: *jetzig.data.Value, env: jetzig // name. As far as I can tell, this is only an // issue for Weezer. - // Artist Artist hash. If two artists have the same name, + // Artist: Artist hash. If two artists have the same name, // then a descriptive string can be provided to // differentiate after the fact, or in a rule. var album_id: u64 = 0;