util.pubsub: Fix applying per service node defaults when loading from nodestore

remotes/origin/0.11
Kim Alvefur 8 years ago
parent 02a62c8e34
commit 6d3f13818b
  1. 14
      util/pubsub.lua

@ -21,14 +21,14 @@ local default_node_config_mt = { __index = default_node_config };
-- Storage helper functions
local function load_node_from_store(nodestore, node_name)
local node = nodestore:get(node_name);
node.config = setmetatable(node.config or {}, default_node_config_mt);
local function load_node_from_store(service, node_name)
local node = service.config.nodestore:get(node_name);
node.config = setmetatable(node.config or {}, {__index=service.node_defaults});
return node;
end
local function save_node_to_store(nodestore, node)
return nodestore:set(node.name, {
local function save_node_to_store(service, node)
return service.config.nodestore:set(node.name, {
name = node.name;
config = node.config;
subscribers = node.subscribers;
@ -53,7 +53,7 @@ local function new(config)
-- Load nodes from storage, if we have a store and it supports iterating over stored items
if config.nodestore and config.nodestore.users then
for node_name in config.nodestore:users() do
service.nodes[node_name] = load_node_from_store(config.nodestore, node_name);
service.nodes[node_name] = load_node_from_store(service, node_name);
service.data[node_name] = config.itemstore(service.nodes[node_name].config, node_name);
end
end
@ -254,7 +254,7 @@ function service:create(node, actor, options)
};
if self.config.nodestore then
local ok, err = save_node_to_store(self.config.nodestore, self.nodes[node]);
local ok, err = save_node_to_store(self, self.nodes[node]);
if not ok then
self.nodes[node] = nil;
return ok, err;

Loading…
Cancel
Save