113 lines
2.2 KiB
Lua
113 lines
2.2 KiB
Lua
local schema = require("lapis.db.schema")
|
|
local uuid = require("resty.uuid")
|
|
|
|
local types = schema.types
|
|
local create_index = schema.create_index
|
|
|
|
-- ----------- --
|
|
-- 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
|
|
schema.create_table("artists", {
|
|
{"uuid", types.varchar},
|
|
{"name", types.varchar},
|
|
{"date", types.date({ null = true })},
|
|
{"bio", types.text({ null = true })},
|
|
{"urls", types.text({ null = true })},
|
|
|
|
"PRIMARY KEY (uuid)"
|
|
})
|
|
|
|
create_index("artists", "name")
|
|
|
|
-- tracks
|
|
schema.create_table("tracks", {
|
|
{"uuid", types.varchar},
|
|
{"name", types.varchar},
|
|
{"unique_name", types.varchar},
|
|
{"date", types.date({ null = true })},
|
|
|
|
"PRIMARY KEY (uuid)"
|
|
})
|
|
|
|
create_index("tracks", "unique_name", { unique = true })
|
|
|
|
-- stations
|
|
schema.create_table("mixes", {
|
|
{"uuid", types.varchar},
|
|
{"name", types.varchar},
|
|
{"id", types.integer},
|
|
|
|
"PRIMARY KEY (uuid)"
|
|
})
|
|
|
|
-- airtime
|
|
schema.create_table("airtime", {
|
|
{"id", types.serial},
|
|
{"date", types.date},
|
|
{"track", types.foreign_key},
|
|
{"station", types.foreign_key},
|
|
|
|
"PRIMARY KEY (id)"
|
|
})
|
|
|
|
create_index("airtime", "date", "station")
|
|
|
|
-- ---------- --
|
|
-- User stuff --
|
|
-- ---------- --
|
|
|
|
-- users
|
|
schema.create_table("users", {
|
|
{"uuid", types.varchar},
|
|
{"email", types.varchar},
|
|
{"name", types.varchar},
|
|
{"password", types.varchar},
|
|
{"last_login", types.date},
|
|
|
|
"PRIMARY KEY (uuid)"
|
|
})
|
|
|
|
create_index("users", "email", { unique = true })
|
|
|
|
-- favorite_tracks
|
|
-- favorite_mixes
|
|
-- favorite_artists
|
|
-- favorite_releases
|
|
-- favorite_labels
|