PreviouslyOnIFM/code/migrations.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
}