1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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)
|