aboutsummaryrefslogtreecommitdiff
path: root/juick-server/src/main/java/com/juick
diff options
context:
space:
mode:
Diffstat (limited to 'juick-server/src/main/java/com/juick')
-rw-r--r--juick-server/src/main/java/com/juick/service/PMQueriesServiceImpl.java45
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)