diff options
Diffstat (limited to 'resources/probentermine.lua')
| -rw-r--r-- | resources/probentermine.lua | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/resources/probentermine.lua b/resources/probentermine.lua new file mode 100644 index 0000000..9f33a65 --- /dev/null +++ b/resources/probentermine.lua @@ -0,0 +1,97 @@ +function print_response(konzert, proben, status_code) + ngx.status = status_code + local cjson = require "cjson" + konzert, err = cjson.encode(konzert) + proben, err = cjson.encode(proben) + if not konzert and not proben then + status_code = 500 + konzert = err + proben = err + end + + local now = ngx.localtime() + + if status_code > 399 then + -- nginx error + ngx.print("{\"success\": false, \"error\": \"" .. konzert .. "\", \"build\": \"" .. now .. "\"}") + else + -- success + ngx.print("{\"success\": true , \"konzert\": " .. konzert .. ", \"proben\": " .. proben .. ", \"build\":\"" .. now .. "\"}") + end + + ngx.exit(status_code) +end + +function success_msg(msg) + print_response(msg, 200) +end + +function connect() + local mysql = require "resty.mysql" + local db, err = mysql:new() + if not db then + print_response("failed to instantiate mysql: " .. err, 500) + end + db:set_timeout(1000) -- 1 sec + + local ok, err, errno, sqlstate = db:connect{ + -- put your config here + host = "", + port = 3306, + database = "", + user = "", + password = "", + max_packet_size = 1024*1024 + } + + if not ok then + print_response("failed to connect: " .. err .. ": " .. errno .. " " .. sqlstate, nil, 500 ) + end + + local res, err, errcode, sqlstate = db:query("SET names utf8;") + if err or not res then + print_response("failed to set names: " .. err , nil, 500 ) + end + + return db +end + +function probentermine(db) + local sql = 'select termin, uhrzeit from proben where date(STR_TO_DATE(termin, "%d.%m.%Y")) > (SELECT CURDATE() );' + res, err, errno, sqlstate = db:query(sql) + if not res or err then + return nil, err + end + + return res, nil +end + +function konzerttermin(db) + local sql = 'select termin,uhrzeit,beschreibung,anfahrt from konzert order by id desc limit 1;'; + res, err, errno, sqlstate = db:query(sql) + if not res or err then + return nil, err + end + + return res, nil +end + +function close(db) + local ok, err = db:close() + if not ok then + return err + end + + return nil +end + +local cjson = require "cjson" + +local db = connect() + +local konzert = konzerttermin(db) +local termine = probentermine(db) + +close(db) + +print_response(konzert, termine, 200) |
