modpol/storage/storage-local.lua
MisterE123 f19796f82d *Reorganized code so that further expansion is possible in a very organized manner.
*modpol.add_member() -- added a check if the member is already a member of that organized

*storage -- fixed bug by moving storageref to top of file

*added on_joinplayer to add players to instance

*moved minetest specific code in init.lua to modpol_minetest, organized in folders.
All overrides in one folder, all chatcommands in another, the on_joinplayer in modpol_minetest/orgs/instance.lua
2021-02-10 23:40:28 -05:00

118 lines
3.5 KiB
Lua

-- ===================================================================
-- /storage-local.lua
-- Persistent storage in /data using Serpent Serializer
-- Unix systems only
-- ===================================================================
-- Set directories and filenames
modpol.datadir = modpol.topdir .. "/data"
modpol.file_ledger = modpol.datadir .. "/ledger.dat"
modpol.file_orgs = modpol.datadir .. "/orgs.dat"
os.execute ("mkdir -p " .. modpol.datadir)
modpol.ocutil.setlogdir (modpol.datadir)
modpol.ocutil.setlogname ("modpol.log")
-- ===================================================================
-- Set up the Serpent Serializer functions.
modpol.serpent = {}
dofile (modpol.topdir .. "/util/serpent/serpent.lua")
-- ===================================================================
-- This function stores "ledger" data to disk.
local store_ledger = function()
local ok = modpol.ocutil.file_write (modpol.file_ledger,
modpol.serpent.dump (modpol.ledger))
if ok ~= true then
modpol.ocutil.fatal_error ("store_data: ledger")
end
local nn = modpol.ocutil.table_length (modpol.ledger)
local str = "entries"
if nn == 1 then str = "entry" end
modpol.ocutil.log (nn .. " global ledger entries stored to disk")
end
-- ===================================================================
-- This function stores "orgs" data to disk.
local store_orgs = function()
local ok = modpol.ocutil.file_write (modpol.file_orgs,
modpol.serpent.dump (modpol.orgs))
if ok ~= true then
modpol.ocutil.fatal_error ("store_data: orgs")
end
local nn = modpol.ocutil.table_length (modpol.orgs)
local str = "entries"
if nn == 1 then str = "entry" end
modpol.ocutil.log (nn .. " orgs stored to disk")
end
-- ===================================================================
-- This function stores data to disk.
modpol.store_data = function()
store_ledger()
store_orgs()
end
-- ===================================================================
-- This function loads "ledger" data from disk.
local load_ledger = function()
local obj = modpol.ocutil.file_read (modpol.file_ledger )
if obj ~= nil then
local func, err = load (obj)
if err then
modpol.ocutil.fatal_error ("load_data: ledger" )
end
modpol.ledger = func()
local nn = modpol.ocutil.table_length (modpol.ledger)
local str = "entries"
if nn == 1 then str = "entry" end
modpol.ocutil.log (nn .. " global ledger entries loaded from disk")
else
modpol.ocutil.log ("No stored global ledger data found")
end
end
-- ===================================================================
-- This function loads "orgs" data from disk.
local load_orgs = function()
local obj = modpol.ocutil.file_read (modpol.file_orgs )
if obj ~= nil then
local func, err = load (obj)
if err then
modpol.ocutil.fatal_error ("load_data: orgs" )
end
modpol.orgs = func()
local nn = modpol.ocutil.table_length (modpol.orgs)
local str = "entries"
if nn == 1 then str = "entry" end
modpol.ocutil.log (nn .. " orgs loaded from disk")
else
modpol.ocutil.log ("No stored orgs data found")
end
end
-- ===================================================================
-- This function loads stored data from disk.
modpol.load_storage = function()
load_ledger()
load_orgs()
end
-- ===================================================================
-- End of file.