summaryrefslogtreecommitdiff
path: root/src/rddb.lua
blob: 52ecf1b135ba04c29a6edc4bac2526946b5ad7bb (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
--
--  rhnop
--
--  Copyright (C) 2011-2015 Christian Pointner <equinox@helsinki.at>
--
--  This file is part of rhnop.
--
--  rhnop is free software: you can redistribute it and/or modify
--  it under the terms of the GNU General Public License as published by
--  the Free Software Foundation, either version 3 of the License, or
--  any later version.
--
--  rhnop is distributed in the hope that it will be useful,
--  but WITHOUT ANY WARRANTY; without even the implied warranty of
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--  GNU General Public License for more details.
--
--  You should have received a copy of the GNU General Public License
--  along with rhnop. If not, see <http://www.gnu.org/licenses/>.
--

luasql = require "luasql.mysql"

local rddb = {}

function rddb:init(conf)
   local err

   self.env, err = luasql.mysql()
   if self.env == nil then
      return nil, err
   end

   self.con, err = self.env:connect(conf.rddb_db, conf.rddb_user, conf.rddb_pwd, conf.rddb_host, conf.rddb_port)
   if self.con == nil then
      return nil, err
   end

   local ret, err = self.con:execute("SET CHARACTER SET utf8")
   if ret == nil then
      return nil, err
   end

   return true
end

function rddb:getCartInfo(cartnum)
   local cur, err = self.con:execute("select TITLE,ARTIST,ALBUM from CART where NUMBER = " .. self.con:escape(cartnum))
   if cur == nil then
      return nil, err
   end

   if cur:numrows() ~= 1 then
      return nil, "nothing found in rivendell db"
   end

   local results = {}
   results, err = cur:fetch(results, "a")
   cur:close()

   if results.TITLE == nil then results.TITLE = "" end
   if results.ARTIST == nil then results.ARTIST = "" end
   if results.ALBUM == nil then results.ALBUM = "" end

   return results, err
end

function rddb:close()
   if self.con then
      self.con:close()
   end

   if self.env then
      self.env:close()
   end
end

return rddb