Diff

plugins/mod_storage_internal.lua @ 8018:9545d0a9401f

mod_storage_internal: Separate driver from keyval implementation
author Kim Alvefur <zash@zash.se>
date Fri, 31 Mar 2017 17:34:33 +0200
parent 6283:7cf6d3a2c855
child 8019:925098aad268
line wrap: on
line diff
--- a/plugins/mod_storage_internal.lua	Fri Mar 31 17:29:08 2017 +0200
+++ b/plugins/mod_storage_internal.lua	Fri Mar 31 17:34:33 2017 +0200
@@ -3,19 +3,23 @@
 local host = module.host;
 
 local driver = {};
-local driver_mt = { __index = driver };
 
 function driver:open(store, typ)
-	if typ and typ ~= "keyval" then
+	local mt = self[typ or "keyval"]
+	if not mt then
 		return nil, "unsupported-store";
 	end
-	return setmetatable({ store = store, type = typ }, driver_mt);
+	return setmetatable({ store = store, type = typ }, mt);
 end
-function driver:get(user)
+
+local keyval = { };
+driver.keyval = { __index = keyval };
+
+function keyval:get(user)
 	return datamanager.load(user, host, self.store);
 end
 
-function driver:set(user, data)
+function keyval:set(user, data)
 	return datamanager.store(user, host, self.store, data);
 end
 
@@ -23,7 +27,7 @@
 	return datamanager.stores(username, host);
 end
 
-function driver:users()
+function keyval:users()
 	return datamanager.users(host, self.store, self.type);
 end