schemas and db stuff

This commit is contained in:
dreamer 2020-07-22 19:23:15 +02:00
parent e924367e17
commit 7c12c60bdf
5 changed files with 129 additions and 13 deletions

View File

@ -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

10
code/config.lua Normal file
View File

@ -0,0 +1,10 @@
local config = require("lapis.config")
config("development", {
greeting = "waddup",
postgres = {
host = "postgres",
user = "postgres",
password = "the_password",
database = "my_database"
}
})

View File

@ -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"}
}
})

104
code/schemas.lua Normal file
View File

@ -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

View File

@ -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