summaryrefslogtreecommitdiff
path: root/resources/probentermine.lua
blob: 9f33a654dd5622a266af15c6fa2b3163b83567b9 (plain)
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)