local autoload = require("lapis.util").autoload local Model = require("lapis.db.model").Model -- ----------- -- -- Track stuff -- -- ----------- -- -- name/date local Labels = Model:extend("labels", { primary_key = "uuid", relations = { {"releases", has_many = "Releases"}, {"artists", has_many = "Artists"} } }) -- name/date/id local Releases = Model:extend("releases", { primary_key = "uuid", relations = { {"artists", has_many = "Artists"}, {"tracks", has_many = "Tracks"}, {"label", has_one = "Labels"} } }) -- name/date local Mixes = Model:extend("mixes", { primary_key = "uuid", relations = { {"artists", has_many = "Artists"} } }) -- name/date/bio/urls local Artists = Model:extend("artists", { primary_key = "uuid" }) -- title/unique name == `lower(artist+title)` local Tracks = Model:extend("tracks", { primary_key = "uuid", relations = { {"artist", belongs_to = "Artists"}, {"releases", has_many = "Releases"}, {"mixes", has_many = "Mixes"}, -- {"copies", has_many = "Tracks"}, -- {"original", has_one = "Tracks"} } }) -- name/id local Stations = Model:extend("stations", { primary_key = "uuid" }) -- date local Airtime = Model:extend("airtime", { relations = { {"track", belongs_to = "Tracks"}, {"station", has_one = "Stations"} } }) -- ---------- -- -- User stuff -- -- ---------- -- -- name/email/password/last_login local Users = Model:extend("users", { primary_key = "uuid" }) -- date? local Favorite_tracks = Model:extend("favorite_tracks", { relations = { {"user", belongs_to = "Users"}, {"track", has_one = "Tracks"} } }) -- date? local Favorite_mixes = Model:extend("favorite_mixes", {}) local Favorite_artists = Model:extend("favorite_artists", {}) local Favorite_releases = Model:extend("favorite_releases", {}) local Favorite_labels = Model:extend("favorite_labels", {}) return autoload("models")