mongodb_slave.lua 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. local skynet = require "skynet"
  2. require "skynet.manager"
  3. local cjson = require "cjson"
  4. local mongodb_tb = require "settings".mongodb_tb
  5. local CMD = {}
  6. local db = {}
  7. local function init_db(cnf)
  8. local dbc = require "mongodb.mongodb"
  9. return dbc:start(cnf)
  10. end
  11. function CMD.start(cnf)
  12. for _, v in pairs(mongodb_tb) do
  13. db[v] = init_db({host = cnf.host, port = cnf.port, db_name = v})
  14. assert(db[v])
  15. end
  16. end
  17. --cname -> collection name
  18. function CMD.find(dbname, cname, ...)
  19. skynet.error("call_mongodb_slave:",dbname,cname,cjson.encode(...))
  20. local res = db[dbname]:find(cname, ...)
  21. skynet.error("call_mongodb_slave:",cjson.encode(res))
  22. return res
  23. end
  24. function CMD.findOne(dbname, cname, select)
  25. return db[dbname]:findOne(cname, select)
  26. end
  27. function CMD.aggregate(dbname, cname, operation)
  28. return db[dbname]:aggregate(cname, operation)
  29. end
  30. function CMD.update(dbname, cname, select, datas)
  31. return db[dbname]:update(cname, select, datas, true)
  32. end
  33. function CMD.updateMany(dbname, cname, select, datas)
  34. return db[dbname]:updateMany(cname, select, datas)
  35. end
  36. function CMD.insert(dbname, cname, data)
  37. return db[dbname]:insert(cname, data)
  38. end
  39. function CMD.batch_insert(dbname, cname, data)
  40. return db[dbname]:batch_insert(cname, data)
  41. end
  42. function CMD.del(dbname, cname, select)
  43. return db[dbname]:delete(cname, select)
  44. end
  45. skynet.start(function()
  46. skynet.dispatch("lua", function(_, _, cmd, ...)
  47. local f = assert(CMD[cmd], cmd .. "not found")
  48. skynet.retpack(f(...))
  49. end)
  50. end)