diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-12-22 10:25:29 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-12-28 22:46:50 +0200 |
commit | 96c66a5d97280759c47b0fd8d04c3ca148306ad6 (patch) | |
tree | f1a7a0a4f3741b971c193b25ed5ffa12600b4ad9 /acf2 | |
parent | 0db34a2fb194b83cd596260b78c6d61ff3c5557c (diff) | |
download | acf2-96c66a5d97280759c47b0fd8d04c3ca148306ad6.tar.bz2 acf2-96c66a5d97280759c47b0fd8d04c3ca148306ad6.tar.xz |
model: implement 'cascade' deletion policy to delete reference's parent
Diffstat (limited to 'acf2')
-rw-r--r-- | acf2/model/init.lua | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/acf2/model/init.lua b/acf2/model/init.lua index f2f79df..8f6d133 100644 --- a/acf2/model/init.lua +++ b/acf2/model/init.lua @@ -180,8 +180,15 @@ function M.Reference:deleted(context, addr) raise(context.path, 'Refers to '..addr) end - assert(policy == 'set-null') - node.save(context.parent, M.path.name(context.path)) + local parent = context.parent + local path = context.path + + if policy == 'cascade' then + path = node.path(parent) + parent = node.parent(parent) + else assert(policy == 'set-null') end + + node.save(parent, M.path.name(path)) end end |