schemas and db stuff
This commit is contained in:
parent
e924367e17
commit
7c12c60bdf
@ -1,8 +1,12 @@
|
|||||||
local lapis = require("lapis")
|
local lapis = require("lapis")
|
||||||
|
local config = require("lapis.config").get()
|
||||||
|
local models = require("models")
|
||||||
|
|
||||||
local app = lapis.Application()
|
local app = lapis.Application()
|
||||||
|
|
||||||
app:get("/", function()
|
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)
|
end)
|
||||||
|
|
||||||
return app
|
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 autoload = require("lapis.util").autoload
|
||||||
|
|
||||||
local Model = require("lapis.db.model").Model
|
local Model = require("lapis.db.model").Model
|
||||||
local schema = require("lapis.db.schema")
|
|
||||||
local types = schema.types
|
|
||||||
|
|
||||||
-- ----------- --
|
-- ----------- --
|
||||||
-- Track stuff --
|
-- Track stuff --
|
||||||
@ -17,7 +14,7 @@ local Labels = Model:extend("labels", {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
-- name/label/date/id
|
-- name/date/id
|
||||||
local Releases = Model:extend("releases", {
|
local Releases = Model:extend("releases", {
|
||||||
primary_key = "uuid",
|
primary_key = "uuid",
|
||||||
relations = {
|
relations = {
|
||||||
@ -27,7 +24,7 @@ local Releases = Model:extend("releases", {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
-- name/dj/date
|
-- name/date
|
||||||
local Mixes = Model:extend("mixes", {
|
local Mixes = Model:extend("mixes", {
|
||||||
primary_key = "uuid",
|
primary_key = "uuid",
|
||||||
relations = {
|
relations = {
|
||||||
@ -61,7 +58,7 @@ local Stations = Model:extend("stations", {
|
|||||||
local Airtime = Model:extend("airtime", {
|
local Airtime = Model:extend("airtime", {
|
||||||
relations = {
|
relations = {
|
||||||
{"track", belongs_to = "Tracks"},
|
{"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"
|
version: "3"
|
||||||
services:
|
services:
|
||||||
previouslyon:
|
previouslyonifm:
|
||||||
build: .
|
build: .
|
||||||
# image: mileschou/lapis
|
|
||||||
# environment:
|
|
||||||
restart: always
|
restart: always
|
||||||
# context: /srv/lapis
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./code:/srv/lapis
|
- ./code:/srv/lapis
|
||||||
ports:
|
ports:
|
||||||
- "8080:8080"
|
- "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