peachy/assets/.init.lua

53 lines
1.5 KiB
Lua

local migrate = require "migrate"
local DB_FILENAME = "peachy.db"
sqlite3 = require "lsqlite3"
local db = sqlite3.open(DB_FILENAME)
db:exec("PRAGMA journal_mode=WAL")
db:exec("PRAGMA foreign_keys")
-- migrate.migrate(db)
fm = require "fullmoon"
fm.sessionOptions.secret = false
fm.setTemplate({ "/tmpl/", tmpl = "fmt" })
fm.setRoute("/static/*", fm.servePath)
fm.setRoute(fm.POST "/open", function(r)
local filename = r.params.filename
if filename == "" then filename = nil end
r.session.filename = filename
return false
end)
fm.setRoute("/open", function(r)
local files = {}
local filename = r.session.filename or ""
return fm.serveContent("opendb", { filename = filename, dir = files })
end)
fm.setRoute("/dirlist", function(r)
local function isSpecial(name)
return name == "." or name == ".." or string.sub(name, 1, 1) == "$"
end
local dirpath = r.params.dirpath
local files, directories = {}, {}
for name, kind in assert(unix.opendir(dirpath)) do
if not isSpecial(name) then
local file = { name = name, path = path.join(dirpath, name) }
if kind == unix.DT_REG then
table.insert(files, file)
elseif kind == unix.DT_DIR then
table.insert(directories, file)
end
end
end
local function compareName(f1, f2)
return f1.name < f2.name
end
table.sort(directories, compareName)
table.sort(files, compareName)
return fm.serveContent("fragment/dirlist", { files = files, directories = directories })
end)
fm.setRoute("/", fm.serveContent "home")
fm.run()