comparison mod_mam/mamprefs.lib.lua @ 1137:431627b07b9f

mod_mam/mamprefs.lib: Cache prefs in memory to save storage calls
author Kim Alvefur <zash@zash.se>
date Sat, 10 Aug 2013 20:42:56 +0200
parents a6d4508f7f28
children 572b1ad46182
comparison
equal deleted inserted replaced
1136:a6d4508f7f28 1137:431627b07b9f
13 ["romeo@montague.net"] = true, -- always 13 ["romeo@montague.net"] = true, -- always
14 ["montague@montague.net"] = false, -- newer 14 ["montague@montague.net"] = false, -- newer
15 }; 15 };
16 end 16 end
17 17
18 local sessions = hosts[module.host].sessions;
18 local prefs = module:open_store("archive2_prefs"); 19 local prefs = module:open_store("archive2_prefs");
20
19 local function get_prefs(user) 21 local function get_prefs(user)
20 return prefs:get(user) or { [false] = global_default_policy }; 22 local user_sessions = sessions[user];
23 local user_prefs = user_sessions and user_sessions.archive_prefs
24 if not user_prefs and user_sessions then
25 user_prefs = prefs:get(user);
26 user_sessions.archive_prefs = user_prefs;
27 end
28 return user_prefs or { [false] = { default = global_default_policy } };
21 end 29 end
22 local function set_prefs(user, user_prefs) 30 local function set_prefs(user, user_prefs)
31 local user_sessions = sessions[user];
32 if user_sessions then
33 user_sessions.archive_prefs = user_prefs;
34 end
23 return prefs:set(user, user_prefs); 35 return prefs:set(user, user_prefs);
24 end 36 end
25 37
26 return { 38 return {
27 get = get_prefs, 39 get = get_prefs,