diff options
-rw-r--r-- | misc/freeswitch/scripts/common/database.lua | 151 |
1 files changed, 0 insertions, 151 deletions
diff --git a/misc/freeswitch/scripts/common/database.lua b/misc/freeswitch/scripts/common/database.lua deleted file mode 100644 index 22a68fb..0000000 --- a/misc/freeswitch/scripts/common/database.lua +++ /dev/null @@ -1,151 +0,0 @@ --- Gemeinschaft 5 module: database class --- (c) AMOOMA GmbH 2012 --- - -module(...,package.seeall) - -Database = {} - -DATABASE_DRIVER = 'mysql' - -function Database.new(self, arg) - arg = arg or {} - object = arg.object or {} - setmetatable(object, self); - self.__index = self; - self.class = 'database'; - self.log = arg.log; - self.conn = nil; - return object; -end - - -function Database.connect(self, database_name, user_name, password, host_name) - local database_driver = nil; - if not (database_name and user_name and password) then - require 'common.configuration_file' - local config = common.configuration_file.get('/var/lib/freeswitch/.odbc.ini'); - if config then - database_driver = config.gemeinschaft.driver - database_name = config.gemeinschaft.DATABASE - user_name = config.gemeinschaft.USER - password = config.gemeinschaft.PASSWORD - host_name = config.gemeinschaft.HOST - end - end - - host_name = host_name or 'localhost'; - database_driver = database_driver or DATABASE_DRIVER; - - if database_driver == 'mysql' then - require "luasql.mysql" - self.env = luasql.mysql(); - elseif database_driver == 'odbc' then - require "luasql.odbc" - self.env = luasql.odbc(); - end - - self.conn = self.env:connect(database_name, user_name, password, host_name); - self.conn_id = tostring(self.conn); - self.database_name = database_name; - self.user_name = user_name; - self.password = password; - self.host_name = host_name; - - -- self.log:debug('DATABASE_CONNECT - connection: ', self.conn_id, ', environment: ', self.env); - - return self; -end - - -function Database.reconnect(self) - self.conn = self.env:connect(self.database_name, self.user_name, self.password, self.host_name); - self.conn_id = tostring(self.conn); - - if self.log then - self.log:info('DATABASE_RECONNECT - connection: ', self.conn_id, ', environment: ', self.env); - end - - return self; -end - - -function Database.connected(self) - return self.conn; -end - - -function Database.query(self, sql_query, call_function) - local cursor = self.conn:execute(sql_query); - - if cursor == nil and not self.conn:execute('SELECT @@VERSION') then - if self.log then - self.log:error('DATABASE_QUERY - lost connection: ', self.conn_id, ', environment: ', self.env, ', query: ', sql_query); - end - self:reconnect(); - - if call_function then - cursor = self.conn:execute(sql_query); - self.log:notice('DATABASE_QUERY - retry: ', sql_query); - end - end - - if cursor and call_function then - repeat - row = cursor:fetch({}, 'a'); - if row then - call_function(row); - end - until not row; - end - - if type(cursor) == 'userdata' then - cursor:close(); - end - - return cursor; -end - - -function Database.query_return_value(self, sql_query) - local cursor = self.conn:execute(sql_query); - - if cursor == nil and not self.conn:execute('SELECT @@VERSION') then - if self.log then - self.log:error('DATABASE_QUERY - lost connection: ', self.conn_id, ', environment: ', self.env, ', query: ', sql_query); - end - self:reconnect(); - cursor = self.conn:execute(sql_query); - self.log:notice('DATABASE_QUERY - retry: ', sql_query); - end - - if type(cursor) == 'userdata' then - local row = cursor:fetch({}, 'n'); - cursor:close(); - - if not row then - return row; - else - return row[1]; - end - end - - return cursor; -end - - -function Database.last_insert_id(self) - return self:query_return_value('SELECT LAST_INSERT_ID()'); -end - - -function Database.release(self, sql_query, call_function) - if self.conn then - self.conn:close(); - end - if self.env then - self.env:close(); - end - - -- self.log:debug('DATABASE_RELEASE - connection: ', self.conn_id, ', status: ', self.env, ', ', self.conn); -end |