/** * 消息库。 */ "use strict"; let configFile = require('../../include/commons').CONFIG_FILE; let config = require('../../resources/config/' + configFile); let ImDb = require('../mysql/db/im.db'); let log = require('../../util/log.js'); const DB_TABLES = require('../../include/commons').DB_TABLES; class MessageRepo { constructor() { } /** * 分页获取消息 * * @param sessionId * @param page * @param size * @param handler */ static findBySessionId(sessionId, page, size, handler) { if (page <= 0) { page = 1; } let session = new Sessions(); session.getSessions(sessionId, function (err, res) { if (!err) { if (res.length == 0) { log.warn("Session is not found!"); handler(null, null); return; } let type = res[0].type; let MessageTable = ""; if (type == 1) { MessageTable = DB_TABLES.MucMessages; } else if (type == 2) { MessageTable = DB_TABLES.P2pMessages; } else { MessageTable = DB_TABLES.GroupMessages; } let sql = "select id, session_id, sender_id, sender_name, content_type, content, timestamp from " + MessageTable + " w where w.session_id = ? limit ?, ?"; ImDb.execQuery({ "sql": sessionsql, "args": [sessionId, page, size], "handler": function (err, res) { if (err) { log.error("sql:" + sql + "data:sessionId:" + sessionId); } else { log.info("getMessagesBySession success by sessionId :" + sessionId); } handler(err, res); } }) } }) } /** * 保存消息 * * @param message 消息对象 * @param sessionType 会话类型,1表示MUC会话,2表示P2P,3表示群会话,4表示临时讨论组 * @param messageId * @param sessionId */ static save(message, sessionType, messageId, sessionId, handler) { var sql = "INSERT INTO " + DB_TABLES.sessionTypeToTableName(sessionType) + " (id, session_id, sender_id, sender_name,content_type, content, timestamp) VALUES (?,?,?,?,?,?,?)"; ImDb.execQuery({ "sql": sql, "args": [messageId, sessionId, message.sender_id, message.sender_name, message.content_type, message.content, message.timestamp], "handler": handler }); } } module.exports = MessageRepo;