storagemanager: Add set_keys method to map store shim
authorKim Alvefur <zash@zash.se>
Tue, 9 Feb 2016 15:54:56 +0000 (16:54 +0100)
committerKim Alvefur <zash@zash.se>
Tue, 9 Feb 2016 15:54:56 +0000 (16:54 +0100)
core/storagemanager.lua

index cf2c65d5e65946a867d61e46f5d8df21a2fa8177..4f04e594b4ee752143f610354473518d8a18af43 100644 (file)
@@ -118,6 +118,23 @@ local map_shim_mt = {
                        current[key] = data;
                        return self.keyval_store:set(username, current);
                end;
+               set_keys = function (self, username, keydatas)
+                       local current, err = self.keyval_store:get(username);
+                       if current == nil then
+                               if err then
+                                       return nil, err;
+                               else
+                                       current = keydatas;
+                               end
+                       else
+                               for k,v in pairs(keydatas) do
+                                       if v == self.remove then v = nil; end
+                                       current[k] = v;
+                               end
+                       end
+                       return self.keyval_store:set(username, current);
+               end;
+               remove = {};
        };
 }