Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. pcall(function()
  2. require("mysqloo")
  3. end)
  4.  
  5. SH_ACC.MySQLConfig = {
  6. host = "localhost",
  7. username = "root",
  8. password = "",
  9. database = "default",
  10. port = 3306,
  11. }
  12.  
  13. SH_ACC.TableName = "sh_accessory"
  14.  
  15. function SH_ACC:InitializeDB()
  16. self:ConnectToDB(function(ok, err)
  17. if (self.DatabaseMode == 1) then
  18. if (!ok) then
  19. MsgC(Color(52, 152, 219), "SH Accessories", Color(255, 0, 0), ": Failed to connect to MySQL database! (" .. err .. ")\n")
  20. return
  21. end
  22.  
  23. MsgC(Color(52, 152, 219), "SH Accessories", Color(0, 255, 0), ": Connected to MySQL database!\n")
  24. else
  25. MsgC(Color(52, 152, 219), "SH Accessories", Color(0, 255, 0), ": Using sv.db for data.\n")
  26. end
  27.  
  28. self:TableExists(self.TableName, function(exists)
  29. if (exists) then
  30. return end
  31.  
  32. if (self.DatabaseMode == 1) then
  33. self:Query("CREATE TABLE " .. self.TableName .. " ( id VARCHAR(50) PRIMARY KEY, inventory TEXT, equipped TEXT )")
  34. else
  35. self:Query("CREATE TABLE " .. self.TableName .. " ( id string, inventory string, equipped string )")
  36. end
  37. end)
  38. end)
  39. end
  40.  
  41. function SH_ACC:ConnectToDB(callback)
  42. local cfg = self.MySQLConfig
  43.  
  44. callback = callback or function(ok, err) end
  45.  
  46. local db = mysqloo.connect(cfg.host, cfg.username, cfg.password, cfg.database, cfg.port)
  47. db:setAutoReconnect(true)
  48. db:setMultiStatements(true)
  49. db.onConnected = function()
  50. callback(true)
  51. end
  52. db.onConnectionFailed = function(me, err)
  53. callback(false, err)
  54. end
  55. db:connect()
  56. _SH_ACC_DATABASE = db
  57. end
  58.  
  59. function SH_ACC:Query(q, args, callback)
  60. callback = callback or function() end
  61.  
  62. for k, v in pairs (args or {}) do
  63. if (type(v) == "Player" and IsValid(v)) then -- cast player into formatted steamid
  64. v = v:SteamID():Replace(":", "_"):sub(7)
  65. end
  66.  
  67. q = q:Replace(":" .. k, self:EscapeString(v))
  68. end
  69.  
  70. q = q:Replace(":db", self.TableName)
  71.  
  72. self:ExecuteQuery(q, callback)
  73. end
  74.  
  75. -- override me
  76. function SH_ACC:TableExists(s, callback)
  77. if (self.DatabaseMode == 1) then
  78. self:Query("DESCRIBE " .. s, {}, function(data, ok)
  79. callback(ok)
  80. return true
  81. end)
  82. else
  83. callback(sql.TableExists(s))
  84. end
  85. end
  86.  
  87. function SH_ACC:ExecuteQuery(query, callback)
  88. if (self.DatabaseMode == 1) then
  89. local q = _SH_ACC_DATABASE:query(query)
  90. q.onSuccess = function(me, data)
  91. callback(data, true)
  92. end
  93. q.onError = function(me, err, fq)
  94. local mute = callback(data, false)
  95. if (mute ~= true) then
  96. error("failed to run query '" .. query .. "' (" .. err .. ")")
  97. end
  98. end
  99. q:start()
  100. else
  101. local olderr = sql.m_strError
  102.  
  103. local res = sql.Query(query)
  104.  
  105. local err = sql.m_strError
  106. if (err and err ~= olderr) then
  107. error("failed to run query '" .. query .. "' (" .. err .. ")")
  108. return
  109. end
  110.  
  111. if (callback) then
  112. callback(res)
  113. end
  114. end
  115. end
  116.  
  117. function SH_ACC:EscapeString(s)
  118. if (self.DatabaseMode == 1) then
  119. return "\"" .. _SH_ACC_DATABASE:escape(s) .. "\""
  120. else
  121. return sql.SQLStr(s)
  122. end
  123. end
  124.  
  125. function SH_ACC:BeginCommit()
  126. if (self.DatabaseMode == 1) then
  127. self:Query("BEGIN")
  128. else
  129. sql.Begin()
  130. end
  131. end
  132.  
  133. function SH_ACC:FinishCommit()
  134. if (self.DatabaseMode == 1) then
  135. self:Query("COMMIT")
  136. else
  137. sql.Commit()
  138. end
  139. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement