-- -- rhnop -- -- Copyright (C) 2011 Christian Pointner -- -- 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 . -- luasql = require "luasql.mysql" -- CREATE DATABASE rhnop -- GRANT select,insert,update ON rhnop.* TO 'nopsyncd' IDENTIFIED BY ''; -- GRANT select ON rhnop.* TO 'nopcollectd' IDENTIFIED BY ''; -- USE rhnop -- CREATE TABLE IF NOT EXISTS now (timestamp BIGINT UNSIGNED 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