PreviouslyOnIFM/code/models.lua
2020-07-18 04:18:13 +02:00

92 lines
2.1 KiB
Lua

local autoload = require("lapis.util").autoload
local Model = require("lapis.db.model").Model
local schema = require("lapis.db.schema")
local types = schema.types
-- ----------- --
-- Track stuff --
-- ----------- --
-- name/date
local Labels = Model:extend("labels", {
primary_key = "uuid",
relations = {
{"releases", has_many = "Releases"},
{"artists", has_many = "Artists"}
}
})
-- name/label/date/id
local Releases = Model:extend("releases", {
primary_key = "uuid",
relations = {
{"artists", has_many = "Artists"},
{"tracks", has_many = "Tracks"},
{"label", has_one = "Labels"}
}
})
-- name/dj/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"},
{"stations", 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")