diff --git a/code/app.lua b/code/app.lua index 23814fa..30e5c5d 100644 --- a/code/app.lua +++ b/code/app.lua @@ -1,8 +1,12 @@ local lapis = require("lapis") +local config = require("lapis.config").get() +local models = require("models") + local app = lapis.Application() app:get("/", function() - return "Welcome to Lapis " .. require("lapis.version") + -- return "Welcome to Lapis " .. require("lapis.version") + return config.greeting .. " from port " .. config.postgres.password end) return app diff --git a/code/config.lua b/code/config.lua new file mode 100644 index 0000000..5044e8e --- /dev/null +++ b/code/config.lua @@ -0,0 +1,10 @@ +local config = require("lapis.config") +config("development", { + greeting = "waddup", + postgres = { + host = "postgres", + user = "postgres", + password = "the_password", + database = "my_database" + } +}) diff --git a/code/models.lua b/code/models.lua index ae4ad12..4feae6c 100644 --- a/code/models.lua +++ b/code/models.lua @@ -1,8 +1,5 @@ local autoload = require("lapis.util").autoload - local Model = require("lapis.db.model").Model -local schema = require("lapis.db.schema") -local types = schema.types -- ----------- -- -- Track stuff -- @@ -17,7 +14,7 @@ local Labels = Model:extend("labels", { } }) --- name/label/date/id +-- name/date/id local Releases = Model:extend("releases", { primary_key = "uuid", relations = { @@ -27,7 +24,7 @@ local Releases = Model:extend("releases", { } }) --- name/dj/date +-- name/date local Mixes = Model:extend("mixes", { primary_key = "uuid", relations = { @@ -61,7 +58,7 @@ local Stations = Model:extend("stations", { local Airtime = Model:extend("airtime", { relations = { {"track", belongs_to = "Tracks"}, - {"stations", has_one = "Stations"} + {"station", has_one = "Stations"} } }) diff --git a/code/schemas.lua b/code/schemas.lua new file mode 100644 index 0000000..f0842bc --- /dev/null +++ b/code/schemas.lua @@ -0,0 +1,104 @@ +local schema = require("lapis.db.schema") +local uuid = require("resty.uuid") + +local types = schema.types +local create_index = schema.create_index + +-- labels +schema.create_table("labels", { + {"uuid", types.varchar}, + {"name", types.varchar}, + {"date", types.date}, + + "PRIMARY KEY (uuid}" +}) + +create_index("labels", "name", { unique = true }) + +-- releases +schema.create_table("releases", { + {"uuid", types.varchar}, + {"name", types.varchar}, + {"date", types.date}, + {"id", types.varchar}, + + "PRIMARY KEY (uuid}" +}) + +create_index("releases", "name", "id", { unique = true }) + +-- mixes +schema.create_table("mixes", { + {"uuid", types.varchar}, + {"name", types.varchar}, + {"date", types.date}, + + "PRIMARY KEY (uuid)" +}) + +create_index("mixes", "name", "date", { unique = true }) + +-- artists +schema.create_table("artists", { + {"uuid", types.varchar}, + {"name", types.varchar}, + {"date", types.date({ null = true })}, + {"bio", types.text({ null = true })}, + {"urls", types.text({ null = true })}, + + "PRIMARY KEY (uuid)" +}) + +create_index("artists", "name") + +-- tracks +schema.create_table("tracks", { + {"uuid", types.varchar}, + {"name", types.varchar}, + {"unique_name", types.varchar}, + {"date", types.date({ null = true })}, + + "PRIMARY KEY (uuid)" +}) + +create_index("tracks", "unique_name", { unique = true }) + +-- stations +schema.create_table("mixes", { + {"uuid", types.varchar}, + {"name", types.varchar}, + {"id", types.integer}, + + "PRIMARY KEY (uuid)" +}) + +-- airtime +schema.create_table("airtime", { + {"id", types.serial}, + {"date", types.date}, + {"track", types.foreign_key}, + {"station", types.foreign_key}, + + "PRIMARY KEY (id)" +}) + +create_index("airtime", "date", "station") + +-- users +schema.create_table("users", { + {"uuid", types.varchar}, + {"email", types.varchar}, + {"name", types.varchar}, + {"password", types.varchar}, + {"last_login", types.date}, + + "PRIMARY KEY (uuid)" +}) + +create_index("users", "email", { unique = true }) + +-- favorite_tracks +-- favorite_mixes +-- favorite_artists +-- favorite_releases +-- favorite_labels diff --git a/docker-compose.yml b/docker-compose.yml index 22072c9..23563af 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,14 +1,15 @@ version: "3" services: - previouslyon: + previouslyonifm: build: . - # image: mileschou/lapis - # environment: restart: always - # context: /srv/lapis volumes: - ./code:/srv/lapis ports: - "8080:8080" - # command: ['lapis', 'new', '--lua', '&&', 'lapis', 'server'] - # command: ['pwd'] + + postgres: + image: postgres:12-alpine + restart: always + environment: + POSTGRES_PASSWORD: the_password