diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-03-20 16:53:56 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-03-25 23:13:11 +0200 |
commit | 395da378214f4537901860b76c15ab1e405d1d3f (patch) | |
tree | 5ae8f5d888f58376db1757242b9f83fba616c876 /server.lua | |
parent | 5d663a122ea39802c096a57ad3fb471dee347759 (diff) | |
download | aconf-395da378214f4537901860b76c15ab1e405d1d3f.tar.bz2 aconf-395da378214f4537901860b76c15ab1e405d1d3f.tar.xz |
new data type: set
Diffstat (limited to 'server.lua')
-rw-r--r-- | server.lua | 27 |
1 files changed, 16 insertions, 11 deletions
@@ -120,21 +120,18 @@ return function(env) if method == 'GET' then local obj = txn:search(path) - if obj == nil then return 404 end - local res if isinstance(obj, acf.model.node.TreeNode) then local node = {} - for _, k in ipairs(acf.model.node.members(obj)) do - local v = obj[k] - if isinstance(v, acf.model.node.TreeNode) then - v = acf.model.node.path(v) - end - node[k] = v + for k, v in acf.model.node.pairs(obj) do + node[k] = isinstance( + v, + acf.model.node.TreeNode + ) and acf.model.node.path(v) or v end res = {data=node, meta=acf.model.node.meta(obj)} - + else res = { data=obj, @@ -145,8 +142,16 @@ return function(env) return 200, nil, res end - -- TODO implement POST for invoking object-specific actions - if method == 'DELETE' then parent[name] = nil + if method == 'POST' then + local obj = txn:search(path) + if not acf.object.isinstance(obj, acf.model.set.Set) then + -- TODO invoke model-specific actions + return 405 + end + + acf.model.set.add(obj, data) + + elseif method == 'DELETE' then parent[name] = nil elseif method == 'PUT' then parent[name] = data else return 405 end |