PreviouslyOnIFM/code/schemas.lua
2020-09-18 00:34:16 +02:00

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