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
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) |