schemas and db stuff
This commit is contained in:
parent
e924367e17
commit
7c12c60bdf
@ -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
10
code/config.lua
Normal 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"
|
||||
}
|
||||
})
|
||||
@ -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
104
code/schemas.lua
Normal 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
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user