You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.4 KiB
Lua

local cbson = require("cbson")
local collection = require("resty.moongoo.collection")
local gridfs = require("resty.moongoo.gridfs")
local _M = {}
local mt = { __index = _M }
function _M.new(name, moongoo)
return setmetatable({name = name, _moongoo = moongoo}, mt)
end
function _M.collection(self, name)
return collection.new(name, self)
end
function _M.gridfs(self, name)
return gridfs.new(self,name)
end
function _M.cmd(self, cmd, params)
local r, err = self._moongoo:connect()
if not r then
return nil, err
end
return self:_cmd(cmd, params)
end
function _M._cmd(self, cmd, params)
local params = params or {}
if type(cmd) == "table" then
local tmpcmd = ''
for k,v in pairs(cmd) do
params[k] = v
tmpcmd = k
end
cmd = tmpcmd
else
params[cmd] = true
end
local cmd = cbson.encode_first(cmd, params)
local _,_,_,_,docs = self._moongoo.connection:_query(self.name..".$cmd", cmd, 0, 1)
if not docs[1] then
return nil, "Empty reply from mongodb"
end
if not docs[1].ok or docs[1].ok == 0 then
return nil, docs[1].errmsg
end
return docs[1]
end
function _M.insert(self, collection, docs)
local r, err = self._moongoo:connect()
if not r then
return nil, err
end
return self:_insert(collection, docs)
end
function _M._insert(self, collection, docs)
self._moongoo.connection:_insert(collection, docs)
return
end
return _M