refactor for kiss and many-to-many
This commit is contained in:
parent
d518372428
commit
ee0e517c34
136
code/models.lua
136
code/models.lua
@ -5,84 +5,118 @@ local Model = require("lapis.db.model").Model
|
|||||||
-- Track stuff --
|
-- Track stuff --
|
||||||
-- ----------- --
|
-- ----------- --
|
||||||
|
|
||||||
-- name/date
|
-- artists
|
||||||
local Labels = Model:extend("labels", {
|
-- - name/date/bio/urls
|
||||||
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", {
|
local Artists = Model:extend("artists", {
|
||||||
primary_key = "uuid"
|
timestamp = true
|
||||||
})
|
})
|
||||||
|
|
||||||
-- title/unique name == `lower(artist+title)`
|
-- tracks
|
||||||
|
-- - title/unique name == `lower(artist+title)`
|
||||||
local Tracks = Model:extend("tracks", {
|
local Tracks = Model:extend("tracks", {
|
||||||
primary_key = "uuid",
|
timestamp = true,
|
||||||
relations = {
|
-- relations = {
|
||||||
{"artist", belongs_to = "Artists"},
|
-- {"track_releases", has_many = "TrackReleases"},
|
||||||
{"releases", has_many = "Releases"},
|
-- {"track_mixes", has_many = "TrackMixes"},
|
||||||
{"mixes", has_many = "Mixes"},
|
|
||||||
-- {"copies", has_many = "Tracks"},
|
-- {"copies", has_many = "Tracks"},
|
||||||
-- {"original", has_one = "Tracks"}
|
-- {"original", has_one = "Tracks"}
|
||||||
|
-- }
|
||||||
|
})
|
||||||
|
|
||||||
|
-- track_artists
|
||||||
|
local TrackArtists = Model:extern("track_artists", {
|
||||||
|
timestamp = true,
|
||||||
|
relations = {
|
||||||
|
{"track", belongs_to = "Tracks"}
|
||||||
|
{"artist", belongs_to = "Artists"}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
-- name/id
|
-- stations
|
||||||
|
-- - name/id
|
||||||
local Stations = Model:extend("stations", {
|
local Stations = Model:extend("stations", {
|
||||||
primary_key = "uuid"
|
timestamp = true
|
||||||
})
|
})
|
||||||
|
|
||||||
-- date
|
-- airtime
|
||||||
local Airtime = Model:extend("airtime", {
|
-- - date
|
||||||
|
local Airtime = Model:extend("airtimes", {
|
||||||
|
timestamp = true,
|
||||||
relations = {
|
relations = {
|
||||||
{"track", belongs_to = "Tracks"},
|
{"track", belongs_to = "Tracks"},
|
||||||
{"station", has_one = "Stations"}
|
{"station", has_one = "Stations"}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- -- releases
|
||||||
|
-- -- - name/date/id
|
||||||
|
-- local Releases = Model:extend("releases", {
|
||||||
|
-- timestamp = true,
|
||||||
|
-- relations = {
|
||||||
|
-- {"artists", has_many = "Artists"},
|
||||||
|
-- {"tracks", has_many = "Tracks"},
|
||||||
|
-- {"label", has_one = "Labels"}
|
||||||
|
-- }
|
||||||
|
-- })
|
||||||
|
|
||||||
|
-- -- track_releases
|
||||||
|
-- local TrackReleases = Model:extend("track_releases", {
|
||||||
|
-- timestamp = true,
|
||||||
|
-- relations = {
|
||||||
|
-- {"track", belongs_to = "Tracks"},
|
||||||
|
-- {"release", belongs_to = "Releases"}
|
||||||
|
-- }
|
||||||
|
-- })
|
||||||
|
|
||||||
|
-- -- labels
|
||||||
|
-- -- - name/date
|
||||||
|
-- local Labels = Model:extend("labels", {
|
||||||
|
-- timestamp = true,
|
||||||
|
-- })
|
||||||
|
|
||||||
|
-- -- release_labels
|
||||||
|
-- local ReleaseLabels = Model:extend("release_labels", {
|
||||||
|
-- timestamp = true,
|
||||||
|
-- relations = {
|
||||||
|
-- {"release", has_many = "Releases"},
|
||||||
|
-- {"label", has_many = "Labels"}
|
||||||
|
-- }
|
||||||
|
-- })
|
||||||
|
|
||||||
|
|
||||||
|
-- -- mixes
|
||||||
|
-- -- name/date
|
||||||
|
-- local Mixes = Model:extend("mixes", {
|
||||||
|
-- timestamp = true,
|
||||||
|
-- relations = {
|
||||||
|
-- {"artists", has_many = "Artists"}
|
||||||
|
-- }
|
||||||
|
-- })
|
||||||
|
|
||||||
|
|
||||||
-- ---------- --
|
-- ---------- --
|
||||||
-- User stuff --
|
-- User stuff --
|
||||||
-- ---------- --
|
-- ---------- --
|
||||||
|
|
||||||
|
--users
|
||||||
-- name/email/password/last_login
|
-- name/email/password/last_login
|
||||||
local Users = Model:extend("users", {
|
local Users = Model:extend("users",
|
||||||
primary_key = "uuid"
|
timestamp = true
|
||||||
})
|
})
|
||||||
|
|
||||||
-- date?
|
-- date?
|
||||||
local Favorite_tracks = Model:extend("favorite_tracks", {
|
-- local Favorite_tracks = Model:extend("favorite_tracks", {
|
||||||
relations = {
|
-- relations = {
|
||||||
{"user", belongs_to = "Users"},
|
-- {"user", belongs_to = "Users"},
|
||||||
{"track", has_one = "Tracks"}
|
-- {"track", has_one = "Tracks"}
|
||||||
}
|
-- }
|
||||||
})
|
-- })
|
||||||
|
|
||||||
-- date?
|
-- date?
|
||||||
local Favorite_mixes = Model:extend("favorite_mixes", {})
|
-- local Favorite_mixes = Model:extend("favorite_mixes", {})
|
||||||
local Favorite_artists = Model:extend("favorite_artists", {})
|
-- local Favorite_artists = Model:extend("favorite_artists", {})
|
||||||
local Favorite_releases = Model:extend("favorite_releases", {})
|
-- local Favorite_releases = Model:extend("favorite_releases", {})
|
||||||
local Favorite_labels = Model:extend("favorite_labels", {})
|
-- local Favorite_labels = Model:extend("favorite_labels", {})
|
||||||
|
|
||||||
return autoload("models")
|
return autoload("models")
|
||||||
|
|||||||
153
code/schemas.lua
153
code/schemas.lua
@ -1,5 +1,4 @@
|
|||||||
local schema = require("lapis.db.schema")
|
local schema = require("lapis.db.schema")
|
||||||
local uuid = require("resty.uuid")
|
|
||||||
|
|
||||||
local types = schema.types
|
local types = schema.types
|
||||||
local create_index = schema.create_index
|
local create_index = schema.create_index
|
||||||
@ -8,85 +7,116 @@ local create_index = schema.create_index
|
|||||||
-- Track stuff --
|
-- Track stuff --
|
||||||
-- ----------- --
|
-- ----------- --
|
||||||
|
|
||||||
-- labels
|
|
||||||
schema.create_table("labels", {
|
|
||||||
{"uuid", types.varchar},
|
|
||||||
{"name", types.varchar},
|
|
||||||
{"date", types.date},
|
|
||||||
|
|
||||||
"PRIMARY KEY (uuid}"
|
|
||||||
})
|
|
||||||
|
|
||||||
create_index("labels", "name", { unique = true })
|
|
||||||
|
|
||||||
-- releases
|
|
||||||
schema.create_table("releases", {
|
|
||||||
{"uuid", types.varchar},
|
|
||||||
{"name", types.varchar},
|
|
||||||
{"date", types.date},
|
|
||||||
{"id", types.varchar},
|
|
||||||
|
|
||||||
"PRIMARY KEY (uuid}"
|
|
||||||
})
|
|
||||||
|
|
||||||
create_index("releases", "name", "id", { unique = true })
|
|
||||||
|
|
||||||
-- mixes
|
|
||||||
schema.create_table("mixes", {
|
|
||||||
{"uuid", types.varchar},
|
|
||||||
{"name", types.varchar},
|
|
||||||
{"date", types.date},
|
|
||||||
|
|
||||||
"PRIMARY KEY (uuid)"
|
|
||||||
})
|
|
||||||
|
|
||||||
create_index("mixes", "name", "date", { unique = true })
|
|
||||||
|
|
||||||
-- artists
|
-- artists
|
||||||
schema.create_table("artists", {
|
schema.create_table("artists", {
|
||||||
{"uuid", types.varchar},
|
{"id", types.serial, { unique=true, primary_key=true }},
|
||||||
|
{"created_at", types.time},
|
||||||
|
{"updated_at", types.time},
|
||||||
{"name", types.varchar},
|
{"name", types.varchar},
|
||||||
{"date", types.date({ null = true })},
|
{"date", types.date({ null = true })},
|
||||||
{"bio", types.text({ null = true })},
|
{"bio", types.text({ null = true })},
|
||||||
{"urls", types.text({ null = true })},
|
{"urls", types.text({ null = true })}
|
||||||
|
|
||||||
"PRIMARY KEY (uuid)"
|
|
||||||
})
|
})
|
||||||
|
|
||||||
create_index("artists", "name")
|
create_index("artists", "name")
|
||||||
|
|
||||||
-- tracks
|
-- tracks
|
||||||
schema.create_table("tracks", {
|
schema.create_table("tracks", {
|
||||||
{"uuid", types.varchar},
|
{"id", types.serial, { unique=true, primary_key=true }},
|
||||||
|
{"created_at", types.time},
|
||||||
|
{"updated_at", types.time},
|
||||||
{"name", types.varchar},
|
{"name", types.varchar},
|
||||||
{"unique_name", types.varchar},
|
{"unique_name", types.varchar},
|
||||||
{"date", types.date({ null = true })},
|
{"date", types.date({ null = true })},
|
||||||
|
-- ("artist", types.foreign_key),
|
||||||
"PRIMARY KEY (uuid)"
|
-- {"releases", types.foreign_key},
|
||||||
|
-- {"mixes", types.foreign_key},
|
||||||
})
|
})
|
||||||
|
|
||||||
create_index("tracks", "unique_name", { unique=true })
|
create_index("tracks", "unique_name", { unique=true })
|
||||||
|
|
||||||
-- stations
|
-- track_artists
|
||||||
schema.create_table("mixes", {
|
schema.create_table("track_artists", {
|
||||||
{"uuid", types.varchar},
|
{"id", types.serial, { unique=true, primary_key=true }},
|
||||||
{"name", types.varchar},
|
{"created_at", types.time},
|
||||||
{"id", types.integer},
|
{"updated_at", types.time},
|
||||||
|
{"track", types.foreign_key}
|
||||||
"PRIMARY KEY (uuid)"
|
{"artist", types.foreign_key},
|
||||||
})
|
})
|
||||||
|
create_index("track_artists", "track", "artist", { unique=true })
|
||||||
|
|
||||||
|
|
||||||
|
-- stations
|
||||||
|
schema.create_table("stations", {
|
||||||
|
{"id", types.serial, { unique=true, primary_key=true }},
|
||||||
|
{"created_at", types.time},
|
||||||
|
{"updated_at", types.time},
|
||||||
|
{"station", types.integer},
|
||||||
|
{"name", types.varchar},
|
||||||
|
})
|
||||||
|
create_index("stations", "station", "name", { unique=true })
|
||||||
|
|
||||||
-- airtime
|
-- airtime
|
||||||
schema.create_table("airtime", {
|
schema.create_table("airtimes", {
|
||||||
{"id", types.serial},
|
{"id", types.serial, { unique=true, primary_key=true }},
|
||||||
{"date", types.date},
|
{"created_at", types.time},
|
||||||
|
{"updated_at", types.time},
|
||||||
|
{"airtime", types.time},
|
||||||
{"track", types.foreign_key},
|
{"track", types.foreign_key},
|
||||||
{"station", types.foreign_key},
|
{"station", types.foreign_key},
|
||||||
|
|
||||||
"PRIMARY KEY (id)"
|
|
||||||
})
|
})
|
||||||
|
create_index("airtimes", "airtime", "track", "station", { unique=true })
|
||||||
|
|
||||||
|
|
||||||
|
-- -- releases
|
||||||
|
-- schema.create_table("releases", {
|
||||||
|
-- {"id", types.serial, { unique=true, primary_key=true }},
|
||||||
|
-- {"created_at", types.time},
|
||||||
|
-- {"updated_at", types.time},
|
||||||
|
-- {"name", types.varchar},
|
||||||
|
-- {"releaseid", types.varchar},
|
||||||
|
-- {"date", types.date},
|
||||||
|
-- })
|
||||||
|
-- create_index("releases", "name", "releaseid", { unique = true })
|
||||||
|
-- labels
|
||||||
|
|
||||||
|
-- -- track_releases
|
||||||
|
-- schema.create_table("track_releases", {
|
||||||
|
-- {"id", types.serial, { unique=true, primary_key=true }},
|
||||||
|
-- {"created_at", types.time},
|
||||||
|
-- {"updated_at", types.time},
|
||||||
|
-- {"track", types.foreign_key},
|
||||||
|
-- {"release", types.foreign_key}
|
||||||
|
-- })
|
||||||
|
-- create_index("track_releases", "track", "release", { unique=true })
|
||||||
|
|
||||||
|
-- schema.create_table("labels", {
|
||||||
|
-- {"id", types.serial, { unique=true, primary_key=true }},
|
||||||
|
-- {"created_at", types.time},
|
||||||
|
-- {"updated_at", types.time},
|
||||||
|
-- {"name", types.varchar},
|
||||||
|
-- {"date", types.date},
|
||||||
|
-- })
|
||||||
|
-- create_index("labels", "name", { unique = true })
|
||||||
|
|
||||||
|
-- schema.create_table("release_labels", {
|
||||||
|
-- {"id", types.serial, { unique=true, primary_key=true }},
|
||||||
|
-- {"created_at", types.time},
|
||||||
|
-- {"updated_at", types.time},
|
||||||
|
-- {"release", types.foreign_key},
|
||||||
|
-- {"label", types.foreign_key}
|
||||||
|
-- })
|
||||||
|
-- create_index("release_labels", "release", "label", { unique=true })
|
||||||
|
|
||||||
|
-- -- mixes
|
||||||
|
-- schema.create_table("mixes", {
|
||||||
|
-- {"id", types.serial, { unique=true, primary_key=true }},
|
||||||
|
-- {"created_at", types.time},
|
||||||
|
-- {"updated_at", types.time},
|
||||||
|
-- {"name", types.varchar},
|
||||||
|
-- {"date", types.date}
|
||||||
|
-- })
|
||||||
|
-- create_index("mixes", "name", "date", { unique = true })
|
||||||
|
|
||||||
|
|
||||||
create_index("airtime", "date", "station")
|
|
||||||
|
|
||||||
-- ---------- --
|
-- ---------- --
|
||||||
-- User stuff --
|
-- User stuff --
|
||||||
@ -94,15 +124,14 @@ create_index("airtime", "date", "station")
|
|||||||
|
|
||||||
-- users
|
-- users
|
||||||
schema.create_table("users", {
|
schema.create_table("users", {
|
||||||
{"uuid", types.varchar},
|
{"id", types.serial, { unique=true, primary_key=true }},
|
||||||
|
{"created_at", types.time},
|
||||||
|
{"updated_at", types.time},
|
||||||
{"email", types.varchar},
|
{"email", types.varchar},
|
||||||
{"name", types.varchar},
|
{"name", types.varchar},
|
||||||
{"password", types.varchar},
|
{"password", types.varchar},
|
||||||
{"last_login", types.date},
|
{"last_login", types.time},
|
||||||
|
|
||||||
"PRIMARY KEY (uuid)"
|
|
||||||
})
|
})
|
||||||
|
|
||||||
create_index("users", "email", { unique = true })
|
create_index("users", "email", { unique = true })
|
||||||
|
|
||||||
-- favorite_tracks
|
-- favorite_tracks
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user