From 53061186390e667a46ce0b48dbd3ba493ab44db1 Mon Sep 17 00:00:00 2001 From: 0xWaleed Date: Sat, 30 Sep 2023 05:48:20 +0300 Subject: [PATCH] feat: support in memory database :sparkles: #3 --- exports.lua | 41 ++++++++++++++++++++++++++++++++++------- kvp_driver.lua | 2 -- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/exports.lua b/exports.lua index 3800b77..7b79f2c 100644 --- a/exports.lua +++ b/exports.lua @@ -12,11 +12,16 @@ local function transform_array_key(key) return table.concat(key, '/') end +local ludb = ludb_new() +ludb:setDriver(kvp_driver()) + +local ludbInMemory = ludb_new() + exports('save', function(key, value) if type(key) == 'table' then key = transform_array_key(key) end - ludb_save(make_key_unique_for_resource(key), value) + ludb:save(make_key_unique_for_resource(key), value) end) exports('saveGlobal', function(key, value) @@ -24,35 +29,57 @@ exports('saveGlobal', function(key, value) key = transform_array_key(key) end print(('global/%s'):format(key)) - ludb_save(('global/%s'):format(key), value) + ludb:save(('global/%s'):format(key), value) +end) + +exports('saveInMemory', function(key, value) + if type(key) == 'table' then + key = transform_array_key(key) + end + ludbInMemory:save(make_key_unique_for_resource(key), value) end) exports('retrieve', function(key) if type(key) == 'table' then key = transform_array_key(key) end - return ludb_retrieve(make_key_unique_for_resource(key)) + return ludb:retrieve(make_key_unique_for_resource(key)) end) exports('retrieveGlobal', function(key) if type(key) == 'table' then key = transform_array_key(key) end - return ludb_retrieve(('global/%s'):format(key)) + return ludb:retrieve(('global/%s'):format(key)) +end) + +exports('retrieveFromMemory', function(key) + if type(key) == 'table' then + key = transform_array_key(key) + end + return ludbInMemory:retrieve(make_key_unique_for_resource(key)) end) exports('delete', function(key) if type(key) == 'table' then key = transform_array_key(key) end - ludb_delete(make_key_unique_for_resource(key)) + ludb:delete(make_key_unique_for_resource(key)) end) exports('deleteGlobal', function(key) if type(key) == 'table' then key = transform_array_key(key) end - ludb_delete(('global/%s'):format(key)) + ludb:delete(('global/%s'):format(key)) +end) + + +exports('deleteInMemory', function(key) + if type(key) == 'table' then + key = transform_array_key(key) + end + ludbInMemory:delete(make_key_unique_for_resource(key)) end) RegisterCommand('0xludb-export', function(serverId) @@ -64,7 +91,7 @@ RegisterCommand('0xludb-export', function(serverId) local ret = SaveResourceFile( GetCurrentResourceName(), ('dump-%s.json'):format(time), - json.encode(ludb_retrieve('*')) + json.encode(ludb:retrieve('*')) ) print('ret', ret, type(ret)) end, true) \ No newline at end of file diff --git a/kvp_driver.lua b/kvp_driver.lua index 31a393c..e552972 100644 --- a/kvp_driver.lua +++ b/kvp_driver.lua @@ -22,5 +22,3 @@ function kvp_driver() return o end - -ludb_set_driver(kvp_driver()) \ No newline at end of file