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 }) -- 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}, }) create_index("stations", "station", "name", { unique=true }) db.insert("stations", { created_at = os.date(), updated_at = os.date(), station = 1, name = "Cybernetic Broadcasting System" }) db.insert("stations", { created_at = os.date(), updated_at = os.date(), station = 2, name = "Disco Fetish" }) db.insert("stations", { created_at = os.date(), updated_at = os.date(), station = 3, name = "The Dream Machine" }) -- 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") -- 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") -- -- labels -- 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({ null=true }) }}, -- }) -- create_index("labels", "name", { unique = true }) -- -- label_releases -- schema.create_table("label_releases", { -- {"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("label_releases", "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 }) -- ---------- -- -- 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 }