Mercurial > prosody-modules
diff mod_storage_mongodb/mod_storage_mongodb.lua @ 1325:b21236b6b8d8
Backed out changeset 853a382c9bd6
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 28 Feb 2014 15:37:55 +0100 |
| parents | 853a382c9bd6 |
| children |
line wrap: on
line diff
--- a/mod_storage_mongodb/mod_storage_mongodb.lua Fri Feb 28 15:36:06 2014 +0100 +++ b/mod_storage_mongodb/mod_storage_mongodb.lua Fri Feb 28 15:37:55 2014 +0100 @@ -1,8 +1,5 @@ local next = next; local setmetatable = setmetatable; -local set = require"util.set"; -local it = require"util.iterators"; -local array = require"util.array"; local params = assert ( module:get_option("mongodb") , "mongodb configuration not found" ); @@ -49,75 +46,6 @@ end; end -local roster_store = {}; -roster_store.__index = roster_store; - -function roster_store:get(username) - local host = module.host or "_global"; - local store = self.store; - - -- The database name can't have a period in it (hence it can't be a host/ip) - local namespace = params.dbname .. "." .. host; - local v = { _id = { store = store ; username = username } }; - - local cursor , err = conn:query ( namespace , v ); - if not cursor then return nil , err end; - - local r , err = cursor:next ( ); - if not r then return nil , err end; - local roster = { - [false] = { - version = r.version; - }; - pending = set.new( r.pending )._items; - }; - local items = r.items; - for i = 1, #items do - local item = items[i]; - roster[item.jid] = { - subscription = item.subscription; - groups = set.new( item.groups )._items; - ask = item.ask; - name = item.name; - } - end - return roster; -end - -function roster_store:set(username, data) - local host = module.host or "_global"; - local store = self.store; - - -- The database name can't have a period in it (hence it can't be a host/ip) - local namespace = params.dbname .. "." .. host; - local v = { _id = { store = store ; username = username } }; - - if data == nil or next(data) == nil then -- delete data - return conn:remove ( namespace , v ); - end - - v.version = data[false].version - if data.pending then - v.pending = array(it.keys(v.pending)) - end - - local items = {} - for jid, item in pairs(data) do - if jid and jid ~= "pending" then - table.insert(items, { - jid = jid; - subscription = item.subscription; - groups = array(it.keys( item.groups )); - name = item.name; - ask = item.ask; - }); - end - end - v.items = items; - - return conn:insert ( namespace , v ); -end - local driver = {}; function driver:open(store, typ) @@ -130,9 +58,6 @@ end if not typ then -- default key-value store - if store == "roster" then - return setmetatable({ store = store }, roster_store); - end return setmetatable({ store = store }, keyval_store); end; return nil, "unsupported-store";
