local schema = require("lapis.db.schema") local types = schema.types local create_index = schema.create_index -- ----------- -- -- 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}, {"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}, {"date", types.date({ null = true })}, -- ("artist", types.foreign_key), -- {"releases", types.foreign_key}, -- {"mixes", types.foreign_key}, }) 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 }) -- 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 }) -- 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 }) -- -- releases -- schema.create_table("releases", { -- {"id", types.serial, { unique=true, primary_key=true }}, -- {"created_at", types.time}, -- {"updated_at", types.time}, -- {"name", types.varchar}, -- {"releaseid", types.varchar}, -- {"date", types.date}, -- }) -- create_index("releases", "name", "releaseid", { unique = true }) -- labels -- -- 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 }) -- 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}, -- }) -- create_index("labels", "name", { unique = true }) -- schema.create_table("release_labels", { -- {"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("release_labels", "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}, {"name", types.varchar}, {"password", types.varchar}, {"last_login", types.time}, }) create_index("users", "email", { unique = true }) -- favorite_tracks -- favorite_mixes -- favorite_artists -- favorite_releases -- favorite_labels