migration.js 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /**
  2. * 群组,即原先的行政团队数据迁移。
  3. *
  4. * @author sand
  5. * @since 2017/1/9
  6. */
  7. let ImDb = require('../../repository/mysql/db/im.db');
  8. let async = require("async");
  9. let log = require("../../util/log.js");
  10. let fs = require('fs');
  11. let migrationFile = "migration.sql";
  12. class Migration {
  13. constructor() {
  14. }
  15. /**
  16. * 迁移P2P及其消息
  17. */
  18. static migrateP2P() {
  19. }
  20. /**
  21. * 迁移团队及其消息
  22. */
  23. static migrateGroups() {
  24. // 选择出所有的行政组
  25. let sql = "select t.id session_id, t.name, 3 `type`, t.create_time 'create_date' " +
  26. "from im_new.msg_group g, wlyy.wlyy_admin_team t " +
  27. "where g.to_gid = t.id group by g.to_gid order by g.to_gid";
  28. async.waterfall([
  29. function (callback) {
  30. ImDb.execQuery({
  31. sql: sql,
  32. args: [],
  33. handler: function (err, sessions) {
  34. if(err){
  35. throw err;
  36. } else{
  37. let sqls = "";
  38. sessions.forEach(function (session) {
  39. sqls += "insert into sessions(id, name) values()";
  40. });
  41. fs.appendFile(migrationFile, "Hey there!", function(err) {
  42. if(err) {
  43. return console.log(err);
  44. }
  45. console.log("The file was saved!");
  46. });
  47. callback(null, sessions);
  48. }
  49. }
  50. })
  51. }
  52. ],
  53. function (err, res) {
  54. log.error("Error occures while migrate group sessions");
  55. });
  56. // 选择出所有的行政组成员
  57. sql = "select t.id session_id, m.id participant_id, 0 'participant_role', 0 'last_fetch_time' " +
  58. "from im_new.msg_group g, wlyy.wlyy_admin_team t, wlyy.wlyy_admin_team_member m " +
  59. "where g.to_gid = t.id and t.id = m.team_id group by g.to_gid order by g.to_gid";
  60. // 选择出所有的行政组消息
  61. sql = "select g.msg_id 'id', g.to_gid 'session_id', g.from_uid 'sender_id', 'sender_name' '', g.`type` 'content_type', g.content 'content', g.timestamp 'timestamp', g.at_uid 'at' " +
  62. "from im_new.msg_group g " +
  63. "where length(g.to_gid) < 20 order by g.to_gid";
  64. }
  65. /**
  66. * 迁移MUC及其消息
  67. */
  68. static migrateMUC() {
  69. // 选择出所有的咨询组
  70. let sql = "select g.to_gid from im_new.msg_group g where length(g.to_gid) > 20 group by g.to_gid order by g.to_gid";
  71. // 选择出所有的咨询组成员
  72. sql = "select g.to_gid, g.from_uid from im_new.msg_group g where length(g.to_gid) > 20 group by g.to_gid order by g.to_gid";
  73. // 选择出所有的咨询组消息
  74. sql = "select g.to_gid, g.from_uid, g.msg_id, g.`type`, g.content, g.timestamp, g.at_uid from im_new.msg_group g where length(g.to_gid) > 20 order by g.to_gid";
  75. }
  76. }
  77. Migration.migrateGroups();