89 lines
2.0 KiB
Lua
89 lines
2.0 KiB
Lua
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_trackss", {
|
|
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")
|