/** * 群组,即原先的行政团队数据迁移。 * * @author sand * @since 2017/1/9 */ let ImDb = require('../../repository/mysql/db/im.db'); let async = require("async"); let log = require("../../util/log.js"); let fs = require('fs'); let migrationFile = "migration.sql"; class Migration { constructor() { } /** * 迁移P2P及其消息 */ static migrateP2P() { } /** * 迁移团队及其消息 */ static migrateGroups() { // 选择出所有的行政组 let sql = "select t.id session_id, t.name, 3 `type`, t.create_time 'create_date' " + "from im_new.msg_group g, wlyy.wlyy_admin_team t " + "where g.to_gid = t.id group by g.to_gid order by g.to_gid"; async.waterfall([ function (callback) { ImDb.execQuery({ sql: sql, args: [], handler: function (err, sessions) { if(err){ throw err; } else{ let sqls = ""; sessions.forEach(function (session) { sqls += "insert into sessions(id, name) values()"; }); fs.appendFile(migrationFile, "Hey there!", function(err) { if(err) { return console.log(err); } console.log("The file was saved!"); }); callback(null, sessions); } } }) } ], function (err, res) { log.error("Error occures while migrate group sessions"); }); // 选择出所有的行政组成员 sql = "select t.id session_id, m.id participant_id, 0 'participant_role', 0 'last_fetch_time' " + "from im_new.msg_group g, wlyy.wlyy_admin_team t, wlyy.wlyy_admin_team_member m " + "where g.to_gid = t.id and t.id = m.team_id group by g.to_gid order by g.to_gid"; // 选择出所有的行政组消息 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' " + "from im_new.msg_group g " + "where length(g.to_gid) < 20 order by g.to_gid"; } /** * 迁移MUC及其消息 */ static migrateMUC() { // 选择出所有的咨询组 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"; // 选择出所有的咨询组成员 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"; // 选择出所有的咨询组消息 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"; } } Migration.migrateGroups();