diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-06-27 20:18:54 +0300 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-06-28 13:24:36 +0300 |
commit | 5c960909594d1978f45968f8155ab2afab381298 (patch) | |
tree | 40d6de63ce5818a46b05794a4596329c28d4bd5f /acf/model/root.lua | |
parent | 0d5dade5ab61e5cfd3116893aadcb9b16ba5cfb5 (diff) | |
download | aconf-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.lua | 21 |
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 |