mirror of
https://github.com/kepler155c/opus
synced 2024-11-15 13:14:49 +00:00
54 lines
973 B
Lua
54 lines
973 B
Lua
local class = require('class')
|
|
|
|
local TableDB = class()
|
|
function TableDB:init(args)
|
|
local defaults = {
|
|
fileName = '',
|
|
dirty = false,
|
|
data = { },
|
|
tabledef = { },
|
|
}
|
|
Util.merge(defaults, args) -- refactor
|
|
Util.merge(self, defaults)
|
|
end
|
|
|
|
function TableDB:load()
|
|
local table = Util.readTable(self.fileName)
|
|
if table then
|
|
self.data = table.data
|
|
self.tabledef = table.tabledef
|
|
end
|
|
end
|
|
|
|
function TableDB:add(key, entry)
|
|
if type(key) == 'table' then
|
|
key = table.concat(key, ':')
|
|
end
|
|
self.data[key] = entry
|
|
self.dirty = true
|
|
end
|
|
|
|
function TableDB:get(key)
|
|
if type(key) == 'table' then
|
|
key = table.concat(key, ':')
|
|
end
|
|
return self.data[key]
|
|
end
|
|
|
|
function TableDB:remove(key)
|
|
self.data[key] = nil
|
|
self.dirty = true
|
|
end
|
|
|
|
function TableDB:flush()
|
|
if self.dirty then
|
|
Util.writeTable(self.fileName, {
|
|
tabledef = self.tabledef,
|
|
data = self.data,
|
|
})
|
|
self.dirty = false
|
|
end
|
|
end
|
|
|
|
return TableDB
|