use autoload()

This commit is contained in:
dreamer 2020-09-20 17:11:30 +02:00
parent a3cbd71fa3
commit b53b91efc0
7 changed files with 105 additions and 55 deletions

View File

@ -1,3 +1,4 @@
local db = require("lapis.db")
local schema = require("lapis.db.schema") local schema = require("lapis.db.schema")
local types = schema.types local types = schema.types
@ -45,7 +46,6 @@ return {
}) })
create_index("track_artists", "track", "artist", { unique=true }) create_index("track_artists", "track", "artist", { unique=true })
-- stations -- stations
schema.create_table("stations", { schema.create_table("stations", {
{"id", types.serial, { unique=true, primary_key=true }}, {"id", types.serial, { unique=true, primary_key=true }},
@ -56,6 +56,27 @@ return {
}) })
create_index("stations", "station", "name", { unique=true }) 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 -- airtime
schema.create_table("airtimes", { schema.create_table("airtimes", {
{"id", types.serial, { unique=true, primary_key=true }}, {"id", types.serial, { unique=true, primary_key=true }},
@ -67,7 +88,6 @@ return {
}) })
create_index("airtimes", "airtime", "track", "station", { unique=true }) create_index("airtimes", "airtime", "track", "station", { unique=true })
-- -- releases -- -- releases
-- schema.create_table("releases", { -- schema.create_table("releases", {
-- {"id", types.serial, { unique=true, primary_key=true }}, -- {"id", types.serial, { unique=true, primary_key=true }},
@ -90,6 +110,7 @@ return {
-- }) -- })
-- create_index("track_releases", "track", "release", { unique=true }) -- create_index("track_releases", "track", "release", { unique=true })
-- -- labels
-- schema.create_table("labels", { -- schema.create_table("labels", {
-- {"id", types.serial, { unique=true, primary_key=true }}, -- {"id", types.serial, { unique=true, primary_key=true }},
-- {"created_at", types.time}, -- {"created_at", types.time},
@ -99,14 +120,15 @@ return {
-- }) -- })
-- create_index("labels", "name", { unique = true }) -- create_index("labels", "name", { unique = true })
-- schema.create_table("release_labels", { -- -- label_releases
-- schema.create_table("label_releases", {
-- {"id", types.serial, { unique=true, primary_key=true }}, -- {"id", types.serial, { unique=true, primary_key=true }},
-- {"created_at", types.time}, -- {"created_at", types.time},
-- {"updated_at", types.time}, -- {"updated_at", types.time},
-- {"release", types.foreign_key}, -- {"release", types.foreign_key},
-- {"label", types.foreign_key} -- {"label", types.foreign_key}
-- }) -- })
-- create_index("release_labels", "release", "label", { unique=true }) -- create_index("label_releases", "release", "label", { unique=true })
-- -- mixes -- -- mixes
-- schema.create_table("mixes", { -- schema.create_table("mixes", {
@ -119,7 +141,6 @@ return {
-- create_index("mixes", "name", "date", { unique = true }) -- create_index("mixes", "name", "date", { unique = true })
-- ---------- -- -- ---------- --
-- User stuff -- -- User stuff --
-- ---------- -- -- ---------- --
@ -143,4 +164,5 @@ return {
-- favorite_labels -- favorite_labels
end end
} }

View File

@ -1,51 +1,8 @@
local Model = require("lapis.db.model").Model local Model = require("lapis.db.model").Model
-- ----------- -- -- -- ----------- --
-- Track stuff -- -- -- Track stuff --
-- ----------- -- -- -- ----------- --
-- artists
-- - name/date/bio/urls
local Artists = Model:extend("artists", {
timestamp = true
})
-- tracks
-- - title/unique name == `lower(artist+title)`
local Tracks = Model:extend("tracks", {
timestamp = true,
-- relations = {
-- {"track_releases", has_many = "TrackReleases"},
-- {"track_mixes", has_many = "TrackMixes"},
-- {"copies", has_many = "Tracks"},
-- {"original", has_one = "Tracks"}
-- }
})
-- track_artists
local TrackArtists = Model:extend("track_artists", {
timestamp = true,
relations = {
{"track", belongs_to = "Tracks"},
{"artist", belongs_to = "Artists"}
}
})
-- stations
-- - name/id
local Stations = Model:extend("stations", {
timestamp = true
})
-- airtime
-- - date
local Airtime = Model:extend("airtimes", {
timestamp = true,
relations = {
{"track", belongs_to = "Tracks"},
{"station", has_one = "Stations"}
}
})
-- -- releases -- -- releases
@ -117,3 +74,7 @@ local Users = Model:extend("users", {
-- local Favorite_artists = Model:extend("favorite_artists", {}) -- local Favorite_artists = Model:extend("favorite_artists", {})
-- local Favorite_releases = Model:extend("favorite_releases", {}) -- local Favorite_releases = Model:extend("favorite_releases", {})
-- local Favorite_labels = Model:extend("favorite_labels", {}) -- local Favorite_labels = Model:extend("favorite_labels", {})
local autoload = require("lapis.util").autoload
return autoload("models")

14
code/models/airtime.lua Normal file
View File

@ -0,0 +1,14 @@
local Model = require("lapis.db.model").Model
-- airtime
local Airtimes = Model:extend("airtimes", {
-- "airtime", types.time
timestamp = true,
relations = {
{"tracks", belongs_to = "Tracks"},
{"stations", has_one = "Stations"}
}
})
return Airtimes

12
code/models/artists.lua Normal file
View File

@ -0,0 +1,12 @@
local Model = require("lapis.db.model").Model
-- artists
local Artists = Model:extend("artists", {
-- "name", types.varchar
-- "date", types.date
-- "bio", types.text
-- "urls", types.text
timestamp = true
})
return Artists

12
code/models/stations.lua Normal file
View File

@ -0,0 +1,12 @@
local Model = require("lapis.db.model").Model
-- stations
-- - name/id
local Stations = Model:extend("stations", {
-- "station", types.integer
-- "name", types.varchar
timestamp = true
})
return Stations

View File

@ -0,0 +1,12 @@
local Model = require("lapis.db.model").Model
-- track_artists
local TrackArtists = Model:extend("track_artists", {
timestamp = true,
relations = {
{"track", belongs_to = "Tracks"},
{"artist", belongs_to = "Artists"}
}
})
return TrackArtists

17
code/models/tracks.lua Normal file
View File

@ -0,0 +1,17 @@
local Model = require("lapis.db.model").Model
-- tracks
-- - title/unique name == `lower(artist+title)`
local Tracks = Model:extend("tracks", {
-- "name", types.varchar
-- "unique_name", types.varchar
-- "year", types.integer
timestamp = true,
-- relations = {
-- {"copies", has_many = "Tracks"},
-- {"original", has_one = "Tracks"}
-- }
})
return Tracks