· 9 years ago · Dec 04, 2016, 12:26 PM
1local Data = {}
2Data.__index = Data
3
4local sql = require "sqlite3"
5
6function newConnection()
7 local conn = sql.open("DATABASE_NAME.db")
8 return conn
9end
10function Data.new()
11 return setmetatable({connection = newConnection()},Data)
12end
13
14function Data:disconnect()
15 self.connection:close()
16end
17
18function Data:query(query)
19 local success, msg = pcall(function()
20 result = self.connection:exec(query)
21 end)
22 return success and result
23end
24
25function Data:save(TABLE,ID,INDEX,VALUE)
26 local result = self:query([[
27 CREATE TABLE IF NOT EXISTS ]]..TABLE..[[ (id varchar(255) NOT NULL,]]..INDEX..[[ varchar(255));
28 INSERT INTO ]]..TABLE..[[ (id) VALUES ("1");
29 ]])
30 result = self:query("SELECT * FROM "..TABLE..";")
31 if not result["id"] then
32 self:query("ALTER TABLE "..TABLE.." ADD COLUMN id varchar(255);")
33 end
34 if not result[INDEX] then
35 self:query("ALTER TABLE "..TABLE.." ADD COLUMN "..INDEX.." varchar(255);")
36 end
37 result = self:query("SELECT * FROM "..TABLE.." WHERE ID == "..ID.." LIMIT 1;")
38 if result then
39 self:query("UPDATE "..TABLE.." SET "..INDEX.." = '"..VALUE.."' WHERE id = '"..ID.."';")
40 else
41 self:query("INSERT INTO "..TABLE.." (id,"..INDEX..") VALUES ("..ID..",'"..VALUE.."');")
42 end
43end
44
45function Data:load(TABLE,ID)
46 local result = self:query("SELECT * FROM "..TABLE.." WHERE id = "..ID.." LIMIT 1;")
47 return result
48end
49
50return Data