management.endpoint.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /**
  2. * 管理端点。负责数据库,服务器状态等内容反馈。
  3. */
  4. var express = require('express');
  5. var router = express.Router();
  6. var configFile = require('../include/commons').CONFIG_FILE;
  7. var config = require('../resources/config/' + configFile);
  8. var wlyyRepo = require('../repository/database/wlyy.db.js');
  9. var imRepo = require('../repository/database/im.db.js');
  10. var log = require('../util/log');
  11. var APIv1 = require('../include/endpoints').APIv1;
  12. var _ = require('underscore');
  13. function getWlyyTables(handler) {
  14. wlyyRepo.execQuery({
  15. "sql": "SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA = ?",
  16. "args": [config.wlyyDbConfig.database],
  17. "handler": handler
  18. });
  19. }
  20. function getImTables(handler) {
  21. imRepo.execQuery({
  22. "sql": "SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA = ?",
  23. "args": [config.imDbConfig.database],
  24. "handler": handler
  25. });
  26. }
  27. function makeResponse(dbStatus, dbName, err, result) {
  28. if (err) {
  29. dbStatus.push({
  30. name: dbName,
  31. status: 'Failed',
  32. message: err
  33. });
  34. } else {
  35. var tableList = new Array();
  36. _.each(result, function (row) {
  37. tableList.push(row.table_name);
  38. });
  39. var status = {
  40. name: dbName,
  41. status: 'OK',
  42. tables: tableList
  43. };
  44. dbStatus.push(status);
  45. }
  46. }
  47. /**
  48. * 数据库检查,包括所有表,连接状态。
  49. */
  50. router.get(APIv1.Management.DbStatus, function (req, res, next) {
  51. var dbStatus = new Array(0);
  52. getImTables(function (err, result) {
  53. makeResponse(dbStatus, config.imDbConfig.database, err, result);
  54. getWlyyTables(function (err, result) {
  55. makeResponse(dbStatus, config.wlyyDbConfig.database, err, result);
  56. res.json(dbStatus);
  57. });
  58. });
  59. });
  60. module.exports = router;