summaryrefslogtreecommitdiffstats
path: root/acf/model/root.lua
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-06-27 20:18:54 +0300
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-06-28 13:24:36 +0300
commit5c960909594d1978f45968f8155ab2afab381298 (patch)
tree40d6de63ce5818a46b05794a4596329c28d4bd5f /acf/model/root.lua
parent0d5dade5ab61e5cfd3116893aadcb9b16ba5cfb5 (diff)
downloadaconf-5c960909594d1978f45968f8155ab2afab381298.tar.bz2
aconf-5c960909594d1978f45968f8155ab2afab381298.tar.xz
eliminate data type arguments from transaction and persistence manager intefaces
utilize model topology information instead
Diffstat (limited to 'acf/model/root.lua')
-rw-r--r--acf/model/root.lua21
1 files changed, 20 insertions, 1 deletions
diff --git a/acf/model/root.lua b/acf/model/root.lua
index 0c8d866..da15411 100644
--- a/acf/model/root.lua
+++ b/acf/model/root.lua
@@ -60,12 +60,31 @@ function register(name, field, params)
params.create = true
RootModel[name] = model.to_field(field, params)
- for _, record in ipairs(node.topology(RootModel():search(name))) do
+ local root = RootModel()
+
+ for _, record in ipairs(node.topology(root:search(name))) do
local top = topology(record.addr, true)
setdefault(top, 'order', order)
order = order + 1
+ local function set(k, v)
+ setdefault(top, k, v)
+ assert(top[k] == v)
+ end
+
+ set('type', record.type)
table.insert(top.paths, record.path)
+
+ if record.scope then
+ set(
+ 'scope',
+ node.addr(
+ root:search(
+ pth.to_absolute(record.scope, pth.parent(record.path))
+ )
+ )
+ )
+ end
end
end