/** * 搜索功能。 */ "use strict"; let ImDb = require('../mysql/db/im.db'); let log = require('../../util/log.js'); const IMTABLE = require('../../include/commons').IM_DB; class SessionRepo { constructor() { } /** * 获取某个用户的全部session列表 * @param userId * @param handler */ static getUserSessionsFromMysql(userId,handler){ let sql ="select session_id from "+IMTABLE.PARTICIPANTS+" w where w.participaint_id = ? group by w.session_id"; let sessionsql = "select id,name,type,create_date from "+IMTABLE.SESSIONS+" s where s.id in("+sql+")"; ImDb.execQuery({ "sql": sessionsql, "args": [userId], "handler": function (err, res) { if(err) { log.error("sql:"+sessionsql+"data:userId:"+userId); }else{ log.info("getMysqlUserSessions success by userId :"+userId); } handler(err,res); } }); } /** * 获取置顶的消息 * @param userId * @param handler */ static getUserStickSessionsFromMysql(userId,handler){ let sql ="select session_id from "+IMTABLE.PARTICIPANTS+" w where w.participaint_id = ? group by w.session_id"; let sessionsql = "select s.id,s.name,s.type,s.create_date from "+IMTABLE.SESSIONS+" s,"+IMTABLE.STICKY_SESSION+" ss where s.id = ss.session_id s.id in("+sql+")"; ImDb.execQuery({ "sql": sessionsql, "args": [userId], "handler": function (err, res) { if(err) { log.error("sql:"+sessionsql+"data:userId:"+userId); }else{ log.info("getMysqlUserSessions success by userId :"+userId); } handler(err,res); } }); } /** * 获取session单个对象 * @param sessionId * @param handler */ static getSessions(sessionId,handler){ let sessionsql = "select id,name,type,create_date from "+IMTABLE.SESSIONS+" s where s.id=?"; ImDb.execQuery({ "sql": sessionsql, "args": [sessionId], "handler": function (err, res) { if(err) { log.error("sql:"+sessionsql+"data:sessionId:"+sessionId); }else{ log.info("getSessions success by sessionId :"+sessionId); } handler(err,res); } }); } /** * 保存session到sql数据库 * @param sessionId * @param name * @param type * @param createDate */ static saveSessionToMysql(sessionId,name,type,createDate){ let sql ="insert into "+IMTABLE.SESSIONS+" (id,name,type,create_date) VALUES (?,?,?,?) "; ImDb.execQuery({ "sql": sql, "args": [sessionId,name,type,createDate], "handler": function (err, res) { if(err) { log.error("sql:"+sql+"data:sessionId:"+sessionId+",name:"+name+",type:"+type+",createDate:"+createDate); }else{ log.info("save session to mysql is success by session :"+sessionId); } } }); } static stickSession(sessionId,user,score){ let sql ="insert into "+IMTABLE.STICKY_SESSION+" (user_id,session_id,score) VALUES (?,?,?) "; ImDb.execQuery({ "sql": sql, "args": [user,sessionId,score], "handler": function (err, res) { if(err) { log.error("sql:"+sql+"data:sessionId:"+sessionId+",user:"+user+",score:"+score); }else{ log.info("save stickSession to mysql is success by session :"+sessionId); } } }); } static unstickSession(sessionId,user){ let sql ="delete from "+IMTABLE.STICKY_SESSION+" where user_id=? and session_id=? "; ImDb.execQuery({ "sql": sql, "args": [user,sessionId], "handler": function (err, res) { if(err) { log.error("sql:"+sql+"data:sessionId:"+sessionId+",user:"+user); }else{ log.info("delete unstickSession to mysql is success by session :"+sessionId); } } }); } } module.exports = SessionRepo;