Go to file
AndrejIT 7b2b1e0d25 First release. Tested with my two mods and some fixes already done. 2018-09-16 09:33:24 +03:00
.gitignore Initial commit 2018-09-16 09:28:04 +03:00
LICENSE Initial commit 2018-09-16 09:28:04 +03:00
README.md First release. Tested with my two mods and some fixes already done. 2018-09-16 09:33:24 +03:00
depends.txt First release. Tested with my two mods and some fixes already done. 2018-09-16 09:33:24 +03:00
init.lua First release. Tested with my two mods and some fixes already done. 2018-09-16 09:33:24 +03:00
tests.lua First release. Tested with my two mods and some fixes already done. 2018-09-16 09:33:24 +03:00

README.md

jtdb - justtest database

Helper library for Minetest game - Persistent key-value data storage.

Small disk i/o and RAM memory usage. Suitable for medium-size data sets(~100MB).

WARNINGS: Editing files manually will break data! Strings without carriage returns must be used for keys and values. Not really useful if data is smaller then key. "Delete" is much expensive operation then "read" and "write"

Functions: local mybase = jtdb:new( .. "/testfile") mybase:write("123", "apple") mybase:read("123") mybase:write_array({["234"] = "pear", ["345"] = "banana"}) mybase:delete("123") mybase:delete_array({"123", "234", "345"})

Advanced usage: local mybase = jtdb:new( .. "/testfile") mybase.escape_value = true mybase.use_cache = true mybase.escape_v = function(value, key) assert(type(value) == "table") return value.name..":"..value.type end mybase.unescape_v = function(value, key) local name, type = string.match(value, "([^:]):([^:])") return {name=name, type=type} end mybase:write_array({ ["123"] = {name = "apple", type = "fruit"}, ["234"] = {name = "pear", type = "fruit"}, ["345"] = {name = "banana", type = "fruit"}, }) mybase:write("234", {name = "carrot", type = "vegetable"}) for key, _ in pairs(mybase.id) do print(mybase:read(key).name) end