aboutsummaryrefslogtreecommitdiff
path: root/juick-server/src/main/java/com/juick/service/MessagesServiceImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-server/src/main/java/com/juick/service/MessagesServiceImpl.java')
-rw-r--r--juick-server/src/main/java/com/juick/service/MessagesServiceImpl.java41
1 files changed, 29 insertions, 12 deletions
diff --git a/juick-server/src/main/java/com/juick/service/MessagesServiceImpl.java b/juick-server/src/main/java/com/juick/service/MessagesServiceImpl.java
index ba721eea..807f4a9d 100644
--- a/juick-server/src/main/java/com/juick/service/MessagesServiceImpl.java
+++ b/juick-server/src/main/java/com/juick/service/MessagesServiceImpl.java
@@ -92,6 +92,7 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ
quoteUser.setName(rs.getString(20));
msg.setTo(quoteUser);
}
+ msg.setUpdatedAt(rs.getTimestamp(21).toInstant());
if (StringUtils.isNotEmpty(msg.getAttachmentType())) {
try {
imagesService.setAttachmentMetadata(baseImagesUrl, msg);
@@ -148,9 +149,9 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ
}
getJdbcTemplate().update(
- "INSERT INTO messages_txt(message_id, tags, txt) VALUES (?, ?, ?)",
- new Object[]{mid, tagsNames, txt},
- new int[]{Types.INTEGER, Types.VARCHAR, Types.VARCHAR});
+ "INSERT INTO messages_txt(message_id, tags, txt, updated_at) VALUES (?, ?, ?, ?)",
+ new Object[]{mid, tagsNames, txt, Timestamp.from(now)},
+ new int[]{Types.INTEGER, Types.VARCHAR, Types.VARCHAR, Types.TIMESTAMP});
getJdbcTemplate().update("UPDATE users SET lastmessage=? where id=?", Timestamp.from(now), uid);
}
@@ -171,9 +172,9 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ
public int createReply(final int mid, final int rid, final User user, final String txt, final String attachment) {
int ridnew = getReplyIDIncrement(mid);
Date ts = Date.from(Instant.now());
- getJdbcTemplate().update("INSERT INTO replies(message_id, reply_id, user_id, replyto, attach, txt, ts) " +
- "VALUES (?, ?, ?, ?, ?, ?, ?)",
- mid, ridnew, user.getUid(), rid, attachment, txt, ts);
+ getJdbcTemplate().update("INSERT INTO replies(message_id, reply_id, user_id, replyto, attach, txt, ts, updated_at) " +
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
+ mid, ridnew, user.getUid(), rid, attachment, txt, ts, ts);
if (ridnew > 0) {
getJdbcTemplate().update(
@@ -328,8 +329,8 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ
+ "messages.ts,"
+ "messages.readonly, messages.privacy, messages.replies,"
+ "messages.attach, COUNT(DISTINCT favorites.user_id) as likes, messages.hidden,"
- + "txt.tags, txt.repliesby, txt.txt, '' as q, messages.updated, 0 as to_uid, "
- + "NULL as to_name FROM messages "
+ + "txt.tags, txt.repliesby, txt.txt, '' as q, messages.updated as updated, 0 as to_uid, "
+ + "NULL as to_name, txt.updated_at FROM messages "
+ "INNER JOIN users ON messages.user_id = users.id "
+ "INNER JOIN messages_txt AS txt "
+ "ON messages.message_id = txt.message_id "
@@ -337,7 +338,7 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ
+ "ON messages.message_id = favorites.message_id AND favorites.like_id=1 "
+ "WHERE messages.message_id = ? "
+ "GROUP BY mid, rid, replyto, uid, nick, banned, messages.ts, readonly, "
- + "privacy, replies, attach, tags, repliesby, q",
+ + "privacy, replies, attach, tags, repliesby, q, updated_at",
new MessageMapper(),
mid);
if (!list.isEmpty()) {
@@ -356,7 +357,8 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ
"SELECT replies.user_id, users.nick,"
+ "replies.replyto, replies.ts,"
+ "replies.attach, replies.txt, IFNULL(q.txt,t.txt) as quote, "
- + "COALESCE(q.user_id, m.user_id) AS to_uid, COALESCE(qu.nick, mu.nick) AS to_name "
+ + "COALESCE(q.user_id, m.user_id) AS to_uid, COALESCE(qu.nick, mu.nick) AS to_name, "
+ + "replies.updated_at "
+ "FROM replies INNER JOIN users ON replies.user_id = users.id "
+ "LEFT JOIN replies q ON replies.message_id = q.message_id and replies.replyto = q.reply_id "
+ "LEFT JOIN messages_txt t ON replies.message_id = t.message_id "
@@ -388,6 +390,7 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ
quoteUser.setName(rs.getString(9));
msg.setTo(quoteUser);
}
+ msg.setUpdatedAt(rs.getTimestamp(10).toInstant());
return msg;
},
@@ -776,7 +779,7 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ
+ "messages.readonly,messages.privacy, messages.replies-COUNT(DISTINCT banned.reply_id) as replies,"
+ "messages.attach,COUNT(DISTINCT favorites.user_id) AS likes,messages.hidden,"
+ "messages_txt.tags,messages_txt.repliesby, messages_txt.txt, '' as q, "
- + "messages.updated, 0 as to_uid, NULL as to_name "
+ + "messages.updated, 0 as to_uid, NULL as to_name, messages_txt.updated_at "
+ "FROM (messages INNER JOIN messages_txt "
+ "ON messages.message_id=messages_txt.message_id) "
+ "INNER JOIN users ON messages.user_id=users.id "
@@ -852,7 +855,8 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ
"NULL as tags, NULL as repliesby, replies.txt, " +
"IFNULL(qw.txt, t.txt) as q, " +
"NOW(), " +
- "COALESCE(qw.user_id, m.user_id) as to_uid, COALESCE(qu.nick, mu.nick) as to_name " +
+ "COALESCE(qw.user_id, m.user_id) as to_uid, COALESCE(qu.nick, mu.nick) as to_name, " +
+ "replies.updated_at " +
"FROM replies INNER JOIN users " +
"ON replies.user_id = users.id " +
"LEFT JOIN replies qw ON replies.message_id = qw.message_id and replies.replyto = qw.reply_id " +
@@ -1011,6 +1015,7 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ
mid, user.getUid());
}
+ @Transactional(readOnly = true)
@Override
public List<Integer> getUnread(User user) {
return jdbcTemplate.queryForList(
@@ -1020,4 +1025,16 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ
"messages.replies>subscr_messages.last_read_rid",
Integer.class, user.getUid());
}
+
+ @Transactional
+ @Override
+ public boolean updateMessage(Integer mid, Integer rid, String body) {
+ Instant now = Instant.now();
+ if (rid == 0) {
+ return jdbcTemplate.update("UPDATE messages_txt SET txt=?, updated_at=? WHERE message_id=?", body, Timestamp.from(now), mid) > 0;
+ } else {
+ return jdbcTemplate.update("UPDATE replies SET txt=?, updated_at=? WHERE message_id=? and reply_id=?",
+ body, Timestamp.from(now), mid, rid) > 0;
+ }
+ }
}