Mercurial > prosody-modules
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, |
