From 0b43b70acb4a408c8a8a5a2346c8cd2bdef2e17b Mon Sep 17 00:00:00 2001 From: dreamer Date: Sat, 18 Jul 2020 03:48:44 +0200 Subject: [PATCH] lua --- code/app.lua | 8 +++++ code/mime.types | 81 ++++++++++++++++++++++++++++++++++++++++++++ code/models.lua | 89 +++++++++++++++++++++++++++++++++++++++++++++++++ code/nginx.conf | 32 ++++++++++++++++++ 4 files changed, 210 insertions(+) create mode 100644 code/app.lua create mode 100644 code/mime.types create mode 100644 code/models.lua create mode 100644 code/nginx.conf diff --git a/code/app.lua b/code/app.lua new file mode 100644 index 0000000..23814fa --- /dev/null +++ b/code/app.lua @@ -0,0 +1,8 @@ +local lapis = require("lapis") +local app = lapis.Application() + +app:get("/", function() + return "Welcome to Lapis " .. require("lapis.version") +end) + +return app diff --git a/code/mime.types b/code/mime.types new file mode 100644 index 0000000..292f886 --- /dev/null +++ b/code/mime.types @@ -0,0 +1,81 @@ +types { + text/html html htm shtml; + text/css css; + text/xml xml; + image/gif gif; + image/jpeg jpeg jpg; + application/x-lua lua; + application/x-moonscript moon; + application/x-javascript js; + application/atom+xml atom; + application/rss+xml rss; + + text/mathml mml; + text/plain txt; + text/vnd.sun.j2me.app-descriptor jad; + text/vnd.wap.wml wml; + text/x-component htc; + + image/png png; + image/tiff tif tiff; + image/vnd.wap.wbmp wbmp; + image/x-icon ico; + image/x-jng jng; + image/x-ms-bmp bmp; + image/svg+xml svg svgz; + image/webp webp; + + application/java-archive jar war ear; + application/mac-binhex40 hqx; + application/msword doc; + application/pdf pdf; + application/postscript ps eps ai; + application/rtf rtf; + application/vnd.ms-excel xls; + application/vnd.ms-powerpoint ppt; + application/vnd.wap.wmlc wmlc; + application/vnd.google-earth.kml+xml kml; + application/vnd.google-earth.kmz kmz; + application/x-7z-compressed 7z; + application/x-cocoa cco; + application/x-java-archive-diff jardiff; + application/x-java-jnlp-file jnlp; + application/x-makeself run; + application/x-perl pl pm; + application/x-pilot prc pdb; + application/x-rar-compressed rar; + application/x-redhat-package-manager rpm; + application/x-sea sea; + application/x-shockwave-flash swf; + application/x-stuffit sit; + application/x-tcl tcl tk; + application/x-x509-ca-cert der pem crt; + application/x-xpinstall xpi; + application/xhtml+xml xhtml; + application/zip zip; + + application/octet-stream bin exe dll; + application/octet-stream deb; + application/octet-stream dmg; + application/octet-stream eot; + application/octet-stream iso img; + application/octet-stream msi msp msm; + + audio/midi mid midi kar; + audio/mpeg mp3; + audio/ogg ogg; + audio/x-m4a m4a; + audio/x-realaudio ra; + + video/3gpp 3gpp 3gp; + video/mp4 mp4; + video/mpeg mpeg mpg; + video/quicktime mov; + video/webm webm; + video/x-flv flv; + video/x-m4v m4v; + video/x-mng mng; + video/x-ms-asf asx asf; + video/x-ms-wmv wmv; + video/x-msvideo avi; +} diff --git a/code/models.lua b/code/models.lua new file mode 100644 index 0000000..44f4b32 --- /dev/null +++ b/code/models.lua @@ -0,0 +1,89 @@ +local autoload = require("lapis.util").autoload +return autoload("models") + +local Model = require("lapis.db.model").Model +local schema = require("lapis.db.schema") +local types = schema.types + +-- ----------- -- +-- Track stuff -- +-- ----------- -- + +-- name/date +local Labels = Model:extend("labels", { + {"releases", has_many = "Releases"} + primary_key "uuid", + relations = { + } +}) + +-- name/label/date/id +local Releases = Model:extend("releases", { + primary_key "uuid" + relations = { + {"artists", has_many = "Artists"}, + {"tracks", has_many = "Tracks"}, + {"label", has_one = "Labels"} + } +}) + +-- name/dj/date +local Mixes = Model:extend("mixes", { + primary_key "uuid", + relations = { + {"artists", has_many = "Artists"} + } +}) + +-- name/date/bio/urls +local Artists = Model:extend("artists"), { + primary_key "uuid" +}) + +-- title/unique name == `lower(artist+title)` +local Tracks = Model:extend("tracks", { + primary_key "uuid", + relations = { + {"artist", belongs_to = "Artists" + {"releases", has_many = "Releases"}, + {"mixes", has_many = "Mixes"}, + -- {"copies", has_many = "Tracks"}, + -- {"original", has_one = "Tracks"} + } +}) + +-- name/id +local Stations = Model:extend("stations", { + primary_key "uuid" +}) + +-- date +local Airtime = Model:extend("airtime", { + relations = { + {"track", belongs_to = "Tracks"}, + {"stations"}, has_one = "Stations"} + } +}) + +-- ---------- -- +-- User stuff -- +-- ---------- -- + +-- name/email/password/last_login +local Users = Model:extend("users", { + primary_key "uuid" +}) + +-- date? +local Favorite_tracks = Model:extend("favorite_trackss", { + relations = { + {"user", belongs_to = "Users"}, + {"track", has_one = "Tracks"} + } +}) + +-- date? +local Favorite_mixes = Model:extend("favorite_mixes", {}) +local Favorite_artists = Model:extend("favorite_artists", {}) +local Favorite_releases = Model:extend("favorite_releases", {}) +local Favorite_labels = Model:extend("favorite_labels", {}) diff --git a/code/nginx.conf b/code/nginx.conf new file mode 100644 index 0000000..f7cd845 --- /dev/null +++ b/code/nginx.conf @@ -0,0 +1,32 @@ +worker_processes ${{NUM_WORKERS}}; +error_log stderr notice; +daemon off; +pid logs/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include mime.types; + + server { + listen ${{PORT}}; + lua_code_cache ${{CODE_CACHE}}; + + location / { + default_type text/html; + content_by_lua_block { + require("lapis").serve("app") + } + } + + location /static/ { + alias static/; + } + + location /favicon.ico { + alias static/favicon.ico; + } + } +}