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.

63 lines
1.4 KiB
Lua

local skynet = require "skynet"
require "skynet.manager"
local mongodb_tb = require "settings".mongodb_tb
local CMD = {}
local db = {}
local function init_db(cnf)
local dbc = require "mongodb.mongodb"
return dbc:start(cnf)
end
function CMD.start(cnf)
for _, v in pairs(mongodb_tb) do
db[v] = init_db({host = cnf.host, port = cnf.port, db_name = v})
assert(db[v])
end
end
--cname -> collection name
function CMD.find(dbname, cname, ...)
return db[dbname]:find(cname, ...)
end
function CMD.findOne(dbname, cname, select)
return db[dbname]:findOne(cname, select)
end
function CMD.aggregate(dbname, cname, operation)
return db[dbname]:aggregate(cname, operation)
end
function CMD.update(dbname, cname, select, datas)
return db[dbname]:update(cname, select, datas, true)
end
function CMD.updateMany(dbname, cname, select, datas)
return db[dbname]:updateMany(cname, select, datas)
end
function CMD.insert(dbname, cname, data)
return db[dbname]:insert(cname, data)
end
function CMD.batch_insert(dbname, cname, data)
return db[dbname]:batch_insert(cname, data)
end
function CMD.del(dbname, cname, select)
return db[dbname]:delete(cname, select)
end
skynet.start(function()
skynet.dispatch("lua", function(_, _, cmd, ...)
local f = assert(CMD[cmd], cmd .. "not found")
skynet.retpack(f(...))
end)
end)