182 lines
4.1 KiB
Zig
182 lines
4.1 KiB
Zig
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: f64,
|
|
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,
|
|
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: f64,
|
|
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,
|
|
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 Rating = jetquery.Model(
|
|
@This(),
|
|
"ratings",
|
|
struct {
|
|
id: i32,
|
|
reference_id: i32,
|
|
score: f64,
|
|
date: jetquery.DateTime,
|
|
created_at: jetquery.DateTime,
|
|
updated_at: jetquery.DateTime,
|
|
},
|
|
.{},
|
|
);
|
|
|
|
pub const RawScrobble = jetquery.Model(@This(), "raw_scrobbles", struct {
|
|
id: i32,
|
|
track: []const u8,
|
|
artist: []const u8,
|
|
album: []const u8,
|
|
date: i32,
|
|
created_at: jetquery.DateTime,
|
|
updated_at: jetquery.DateTime,
|
|
}, .{});
|