diff options
author | Vitaly Takmazov | 2018-10-19 09:58:07 +0300 |
---|---|---|
committer | Vitaly Takmazov | 2018-10-19 09:58:07 +0300 |
commit | afdba016ef43de75ee9aef715c9a460ab08e90d8 (patch) | |
tree | 86b99914f1d833cc7e42caa1f391923db4cadb70 /juick-server/src/main/java/com/juick/service | |
parent | 55b72013720e06835e273310f41c4926ffcd03d5 (diff) |
drop pm_streams
Diffstat (limited to 'juick-server/src/main/java/com/juick/service')
-rw-r--r-- | juick-server/src/main/java/com/juick/service/PMQueriesServiceImpl.java | 45 |
1 files changed, 7 insertions, 38 deletions
diff --git a/juick-server/src/main/java/com/juick/service/PMQueriesServiceImpl.java b/juick-server/src/main/java/com/juick/service/PMQueriesServiceImpl.java index ee49755d..ab153006 100644 --- a/juick-server/src/main/java/com/juick/service/PMQueriesServiceImpl.java +++ b/juick-server/src/main/java/com/juick/service/PMQueriesServiceImpl.java @@ -19,7 +19,6 @@ package com.juick.service; import com.juick.Chat; import com.juick.User; -import org.springframework.dao.DuplicateKeyException; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.SqlParameterSource; import org.springframework.stereotype.Repository; @@ -36,20 +35,9 @@ public class PMQueriesServiceImpl extends BaseJdbcService implements PMQueriesSe @Transactional @Override public boolean createPM(final int uidFrom, final int uid_to, final String body) { - boolean ret = getJdbcTemplate().update( + return getJdbcTemplate().update( "INSERT INTO pm(user_id, user_id_to, txt) VALUES (?, ?, ?)", uidFrom, uid_to, body) > 0; - - if (ret) { - try { - getJdbcTemplate().update( - "INSERT INTO pm_streams(user_id, user_id_to, lastmessage, unread) VALUES (?, ?, NOW(), 1)", - uidFrom, uid_to); - } catch (DuplicateKeyException e) { - // ignore - } - } - return ret; } @Transactional @@ -78,34 +66,21 @@ public class PMQueriesServiceImpl extends BaseJdbcService implements PMQueriesSe @Transactional(readOnly = true) @Override - public String getLastView(final int uidFrom, final int uidTo) { - List<String> list = getJdbcTemplate().queryForList( - "SELECT lastview FROM pm_streams WHERE user_id = ? AND user_id_to = ?", - String.class, - uidFrom, uidTo); - - return list.isEmpty() ? - null : list.get(0); - } - - @Transactional(readOnly = true) - @Override public List<Chat> getLastChats(final User user) { return getJdbcTemplate().query( - "SELECT pm_streams.user_id, users.nick, l.last, pm.txt, pm_streams.unread FROM pm_streams " - + "INNER JOIN users ON users.id = pm_streams.user_id " - + "INNER JOIN pm ON pm.user_id = pm_streams.user_id " + "SELECT l.user_id, users.nick, l.last, pm.txt FROM pm " + + "INNER JOIN users ON users.id = pm.user_id " + + "" + "INNER JOIN (SELECT user_id, MAX(ts) AS last FROM pm " + "WHERE user_id_to=? GROUP BY user_id) l ON l.last = pm.ts " - + "WHERE pm_streams.user_id_to=? " - + "ORDER BY pm_streams.unread DESC, l.last DESC", + + "WHERE pm.user_id_to=? " + + "ORDER BY l.last DESC", (rs, rowNum) -> { com.juick.Chat u = new com.juick.Chat(); u.setUid(rs.getInt(1)); u.setName(rs.getString(2)); u.setLastMessageTimestamp(rs.getTimestamp(3).toInstant()); u.setLastMessageText(rs.getString(4)); - u.setUnreadCount(rs.getInt(5)); return u; }, user.getUid(), user.getUid()); @@ -118,7 +93,7 @@ public class PMQueriesServiceImpl extends BaseJdbcService implements PMQueriesSe .addValue("uid", uid) .addValue("uidTo", uidTo); - List<com.juick.Message> msgs = getNamedParameterJdbcTemplate().query( + return getNamedParameterJdbcTemplate().query( "SELECT pm.user_id, pm.txt, pm.ts, users.nick FROM pm INNER JOIN users ON users.id=pm.user_id WHERE (user_id = :uid AND user_id_to = :uidTo) " + "OR (user_id_to = :uid AND user_id = :uidTo) ORDER BY ts DESC LIMIT 20", sqlParameterSource, @@ -133,12 +108,6 @@ public class PMQueriesServiceImpl extends BaseJdbcService implements PMQueriesSe msg.setTimestamp(rs.getTimestamp(3).toInstant()); return msg; }); - - getNamedParameterJdbcTemplate().update( - "UPDATE pm_streams SET lastview = NOW(), unread = 0 WHERE user_id_to = :uid AND user_id = :uidTo", - sqlParameterSource); - - return msgs; } @Transactional(readOnly = true) |