diff options
author | Christian Pointner <equinox@helsinki.at> | 2011-03-30 01:13:17 (GMT) |
---|---|---|
committer | Christian Pointner <equinox@helsinki.at> | 2011-03-30 01:13:17 (GMT) |
commit | a4f9323b1550715446453c6015a4e2df48f98855 (patch) | |
tree | 21c4e2e21dfc5c7fee3a68c4db2a833d777961ea /rhnop-server/playlog.lua | |
parent | 3af25a5734457ff5aca954b2452cd32d274dbd26 (diff) |
moved to new names (rhnop-client and server)
Diffstat (limited to 'rhnop-server/playlog.lua')
-rw-r--r-- | rhnop-server/playlog.lua | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/rhnop-server/playlog.lua b/rhnop-server/playlog.lua new file mode 100644 index 0000000..37b9ea6 --- /dev/null +++ b/rhnop-server/playlog.lua @@ -0,0 +1,90 @@ +-- +-- rhnop +-- +-- Copyright (C) 2011 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/>. +-- + +require "luasql.mysql" + +-- CREATE DATABASE rhnop +-- GRANT select,insert,update ON rhnop.* TO 'nopsyncd' IDENTIFIED BY '123456'; +-- CREATE TABLE IF NOT EXISTS now (timestamp VARCHAR(16) PRIMARY KEY NOT NULL, cart INT NOT NULL, len INT, showtitle VARCHAR(255), title VARCHAR(255), artist VARCHAR(255), album VARCHAR(255), ismusic BOOLEAN) + +conf = require "conf" + +local playlog = {} + +function playlog:init() + local err + + self.env, err = luasql.mysql() + if self.env == nil then + return nil, err + end + + self.con, err = self.env:connect(conf.playlog_db, conf.playlog_user, conf.playlog_pwd, conf.playlog_host, conf.playlog_port) + if self.con == nil then + return nil, err + end + + local ret, err = self.con:setautocommit(true) + if ret == nil then + return nil, err + end + + return true +end + +function playlog:getLastCart() + local cur, err = self.con:execute("SELECT cart FROM now WHERE timestamp = (SELECT MAX(timestamp) FROM now)") + if cur == nil then + return nil, err + end + + local cart = cur:fetch() + if cart == nil then cart = 0 end + return cart +end + +function playlog:insertNowMusic(timestamp, cart, len, title, artist, album) + cart = tonumber(cart) + len = tonumber(len) + if cart < 400000 or cart > 450000 then + poolnum = 0 + else + poolnum = math.floor(cart/1000) - 399 + end + local cur, err = self.con:execute("INSERT into now VALUES(" .. self.con:escape(timestamp) .. ", " .. cart .. ", " .. len .. ", 'Musikpool " .. poolnum .. "', '" .. self.con:escape(title) .. "', '" .. self.con:escape(artist) .."', '" .. self.con:escape(album) .. "', 1)") + if cur == nil then + return nil, err + end + + return true +end + +function playlog:close() + if self.con then + self.con:close() + end + + if self.env then + self.env:close() + end +end + +return playlog |