Advertisement
Guest User

Untitled

a guest
May 24th, 2017
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.88 KB | None | 0 0
  1. -- connection settings
  2. local hostname = "mysql.ct8.pl"
  3. local username = "m5701_ez"
  4. local password = "---"
  5. local database = "  m5701_ez"
  6. local port = 3306
  7.  
  8. -- fc_core things.
  9. local mysqlConnection = nil
  10. local resultpool = { }
  11. local sqllog = false
  12. local countqueries = 0
  13.  
  14. -- ToDatabase - Internal function, to spawn a DB connection
  15. function connectToDatabase(res)
  16.     mysqlConnection = mysql_connect(hostname, username, password, database, port)
  17.    
  18.     if (not mysqlConnection) then
  19.         if (res == getThisResource()) then
  20.             cancelEvent(true, "Cannot connect to the database.")
  21.         end
  22.         return nil
  23.     end
  24.    
  25.     return nil
  26. end
  27. addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), connectToDatabase, false)
  28.    
  29. -- destroyDatabaseConnection - Internal function, kill the connection if theres one.
  30. function destroyDatabaseConnection()
  31.     if (not mysqlConnection) then
  32.         return nil
  33.     end
  34.     mysql_close(mysqlConnection)
  35.     return nil
  36. end
  37. addEventHandler("onResourceStop", getResourceRootElement(getThisResource()), destroyDatabaseConnection, false)
  38.  
  39. -- do something usefull here
  40. function fc_journalsQLError(str)
  41.     local message = str or 'N/A'
  42.     outputDebugString("mysql ERROR "..mysql_errno(mysqlConnection) .. ": " .. mysql_error(mysqlConnection))
  43.     exports['fc_journals']:logMessage("mysql ERROR :O! [QUERY] " .. message .. " [ERROR] " .. mysql_errno(mysqlConnection) .. ": " .. mysql_error(mysqlConnection), 24)
  44. end
  45.  
  46. function getFreeResultpoolID()
  47.     local size = #resultpool
  48.     if (size == 0) then
  49.         return 1
  50.     end
  51.     for index, query in ipairs(resultpool) do
  52.         if (query == nil) then
  53.             return index
  54.         end
  55.     end
  56.     return (size + 1)
  57. end
  58.  
  59. ------------ EXPORTED FUNCTIONS ---------------
  60.  
  61. function ping()
  62.     if (mysql_ping(mysqlConnection) == false) then
  63.         -- FUU, NO MOAR CONNECTION
  64.         destroyDatabaseConnection()
  65.         connectToDatabase(nil)
  66.         if (mysql_ping(mysqlConnection) == false) then
  67.             fc_journalsQLError()
  68.             return false
  69.         end
  70.         return true
  71.     end
  72.  
  73.     return true
  74. end
  75.  
  76. function escape_string(str)
  77.     if (ping()) then
  78.         return mysql_escape_string(mysqlConnection, str)
  79.     end
  80.     return false
  81. end
  82.  
  83. function query(str)
  84.     if sqllog then
  85.         exports['fc_journals']:logMessage(str, 24)
  86.     end
  87.     countqueries = countqueries + 1
  88.    
  89.     if (ping()) then
  90.         local result = mysql_query(mysqlConnection, str)
  91.         if (not result) then
  92.             fc_journalsQLError(str)
  93.             return false
  94.         end
  95.  
  96.         local resultid = getFreeResultpoolID()
  97.         resultpool[resultid] = result
  98.         return resultid
  99.     end
  100.     return false
  101. end
  102.  
  103. function unbuffered_query(str)
  104.     if sqllog then
  105.         exports['fc_journals']:logMessage(str, 24)
  106.     end
  107.     countqueries = countqueries + 1
  108.    
  109.     if (ping()) then
  110.         local result = mysql_unbuffered_query(mysqlConnection, str)
  111.         if (not result) then
  112.             fc_journalsQLError(str)
  113.             return false
  114.         end
  115.  
  116.         local resultid = getFreeResultpoolID()
  117.         resultpool[resultid] = result
  118.         return resultid
  119.     end
  120.     return false
  121. end
  122.  
  123. function query_free(str)
  124.     local queryresult = query(str)
  125.     if  not (queryresult == false) then
  126.         free_result(queryresult)
  127.         return true
  128.     end
  129.     return false
  130. end
  131.  
  132. function rows_assoc(resultid)
  133.     if (not resultpool[resultid]) then
  134.         return false
  135.     end
  136.     return mysql_rows_assoc(resultpool[resultid])
  137. end
  138.  
  139. function fetch_assoc(resultid)
  140.     if (not resultpool[resultid]) then
  141.         return false
  142.     end
  143.     return mysql_fetch_assoc(resultpool[resultid])
  144. end
  145.  
  146. function free_result(resultid)
  147.     if (not resultpool[resultid]) then
  148.         return false
  149.     end
  150.     mysql_free_result(resultpool[resultid])
  151.     table.remove(resultpool, resultid)
  152.     return nil
  153. end
  154.  
  155. -- incase a nub wants to use it, FINE
  156. function result(resultid, row_offset, field_offset)
  157.     if (not resultpool[resultid]) then
  158.         return false
  159.     end
  160.     return mysql_result(resultpool[resultid], row_offset, field_offset)
  161. end
  162.  
  163. function num_rows(resultid)
  164.     if (not resultpool[resultid]) then
  165.         return false
  166.     end
  167.     return mysql_num_rows(resultpool[resultid])
  168.    
  169. end
  170.  
  171. function insert_id()
  172.     return mysql_insert_id(mysqlConnection) or false
  173. end
  174.  
  175. function query_fetch_assoc(str)
  176.     local queryresult = query(str)
  177.     if  not (queryresult == false) then
  178.         local result = fetch_assoc(queryresult)
  179.         free_result(queryresult)
  180.         return result
  181.     end
  182.     return false
  183. end
  184.  
  185. function query_rows_assoc(str)
  186.     local queryresult = query(str)
  187.     if  not (queryresult == false) then
  188.         local result = rows_assoc(queryresult)
  189.         free_result(queryresult)
  190.         return result
  191.     end
  192.     return false
  193. end
  194.  
  195. function query_insert_free(str)
  196.     local queryresult = query(str)
  197.     if  not (queryresult == false) then
  198.         local result = insert_id()
  199.         free_result(queryresult)
  200.         return result
  201.     end
  202.     return false
  203. end
  204.  
  205. function escape_string(str)
  206.     return mysql_escape_string(mysqlConnection, str)
  207. end
  208.  
  209. function debugMode()
  210.     if (sqllog) then
  211.         sqllog = false
  212.     else
  213.         sqllog = true
  214.     end
  215.     return sqllog
  216. end
  217.  
  218. function returnQueryStats()
  219.     return countqueries
  220.     -- maybe later more
  221. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement