164 lines
5.4 KiB
Lua
164 lines
5.4 KiB
Lua
local db = require("lapis.db")
|
|
local schema = require("lapis.db.schema")
|
|
|
|
local types = schema.types
|
|
local create_index = schema.create_index
|
|
|
|
return {
|
|
[1600494396] = function()
|
|
-- ----------- --
|
|
-- Track stuff --
|
|
-- ----------- --
|
|
|
|
-- artists
|
|
schema.create_table("artists", {
|
|
{"id", types.serial, { unique=true, primary_key=true }},
|
|
{"created_at", types.time},
|
|
{"updated_at", types.time},
|
|
{"name", types.varchar, { unique=true }},
|
|
{"date", types.date({ null=true }) },
|
|
{"bio", types.text({ null=true }) },
|
|
{"urls", types.text({ null=true }) }
|
|
})
|
|
create_index("artists", "name")
|
|
|
|
-- tracks
|
|
schema.create_table("tracks", {
|
|
{"id", types.serial, { unique=true, primary_key=true }},
|
|
{"created_at", types.time},
|
|
{"updated_at", types.time},
|
|
{"name", types.varchar},
|
|
{"unique_name", types.varchar},
|
|
{"year", types.integer({ null=true }) },
|
|
{"info_url", types.varchar({ null=true }) },
|
|
{"img_url", types.varchar({ null=true }) },
|
|
})
|
|
create_index("tracks", "unique_name", { unique=true })
|
|
create_index("tracks", "name")
|
|
create_index("tracks", "year")
|
|
|
|
-- track_artists
|
|
schema.create_table("track_artists", {
|
|
{"id", types.serial, { unique=true, primary_key=true }},
|
|
{"created_at", types.time},
|
|
{"updated_at", types.time},
|
|
{"track", types.foreign_key},
|
|
{"artist", types.foreign_key}
|
|
})
|
|
create_index("track_artists", "track", "artist", { unique=true })
|
|
create_index("track_artists", "track")
|
|
create_index("track_artists", "artist")
|
|
|
|
-- 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},
|
|
{"image", types.varchar},
|
|
})
|
|
create_index("stations", "station", "name", { unique=true })
|
|
|
|
db.insert("stations", {
|
|
created_at = os.date(),
|
|
updated_at = os.date(),
|
|
station = 1,
|
|
name = "Cybernetic Broadcasting System",
|
|
image = "CBS.red.png"
|
|
})
|
|
|
|
db.insert("stations", {
|
|
created_at = os.date(),
|
|
updated_at = os.date(),
|
|
station = 2,
|
|
name = "Disco Fetish",
|
|
image = "DF.red.png"
|
|
})
|
|
|
|
db.insert("stations", {
|
|
created_at = os.date(),
|
|
updated_at = os.date(),
|
|
station = 3,
|
|
name = "The Dream Machine",
|
|
image = "tdm.png"
|
|
})
|
|
|
|
-- airtime
|
|
schema.create_table("airtimes", {
|
|
{"id", types.serial, { unique=true, primary_key=true }},
|
|
{"created_at", types.time},
|
|
{"updated_at", types.time},
|
|
{"airtime", types.time},
|
|
{"track", types.foreign_key},
|
|
{"station", types.foreign_key},
|
|
})
|
|
create_index("airtimes", "airtime", "track", "station", { unique=true })
|
|
create_index("airtimes", "airtime")
|
|
create_index("airtimes", "track")
|
|
create_index("airtimes", "station")
|
|
|
|
-- releases
|
|
schema.create_table("releases", {
|
|
{"id", types.serial, { unique=true, primary_key=true }},
|
|
{"created_at", types.time},
|
|
{"updated_at", types.time},
|
|
{"name", types.varchar},
|
|
{"label", types.varchar({ null=true }) },
|
|
{"year", types.integer({ null=true }) },
|
|
{"country", types.varchar({ null=true }) },
|
|
})
|
|
create_index("releases", "name")
|
|
create_index("releases", "label")
|
|
create_index("releases", "year")
|
|
create_index("releases", "country")
|
|
|
|
-- 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 })
|
|
create_index("track_releases", "track")
|
|
create_index("track_releases", "release")
|
|
|
|
-- -- 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 })
|
|
|
|
|
|
-- ---------- --
|
|
-- User stuff --
|
|
-- ---------- --
|
|
|
|
-- users
|
|
schema.create_table("users", {
|
|
{"id", types.serial, { unique=true, primary_key=true }},
|
|
{"created_at", types.time},
|
|
{"updated_at", types.time},
|
|
{"email", types.varchar, { unique = true }},
|
|
{"name", types.varchar},
|
|
{"password", types.varchar},
|
|
{"last_login", types.time},
|
|
})
|
|
create_index("users", "email", { unique = true })
|
|
|
|
-- favorite_tracks
|
|
-- favorite_artists
|
|
-- favorite_releases
|
|
-- favorite_labels
|
|
-- favorite_mixes
|
|
|
|
end
|
|
|
|
}
|