aboutsummaryrefslogtreecommitdiff
path: root/juick-core/src/main/java/com/juick/server/MessagesQueries.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-core/src/main/java/com/juick/server/MessagesQueries.java')
-rw-r--r--juick-core/src/main/java/com/juick/server/MessagesQueries.java32
1 files changed, 27 insertions, 5 deletions
diff --git a/juick-core/src/main/java/com/juick/server/MessagesQueries.java b/juick-core/src/main/java/com/juick/server/MessagesQueries.java
index fa8881f3..40449e75 100644
--- a/juick-core/src/main/java/com/juick/server/MessagesQueries.java
+++ b/juick-core/src/main/java/com/juick/server/MessagesQueries.java
@@ -75,6 +75,7 @@ public class MessagesQueries {
}
msg.RepliesBy = rs.getString(19);
msg.setText(rs.getString(20));
+ msg.setReplyQuote(formatQuote(rs.getString(21)));
return msg;
}
}
@@ -247,7 +248,7 @@ public class MessagesQueries {
+ "messages.readonly,messages.privacy,messages.replies,"
+ "messages.attach,messages.place_id,messages.lat,"
+ "messages.lon,messages.likes,messages.hidden,"
- + "txt.tags,txt.repliesby,txt.txt FROM messages "
+ + "txt.tags,txt.repliesby,txt.txt, '' as q FROM messages "
+ "INNER JOIN users ON messages.user_id=users.id "
+ "INNER JOIN messages_txt AS txt "
+ "ON messages.message_id=txt.message_id "
@@ -262,8 +263,11 @@ public class MessagesQueries {
try {
return sql.queryForObject("SELECT replies.user_id,users.nick,"
+ "replies.replyto,replies.ts,"
- + "replies.attach,replies.txt FROM replies INNER JOIN users "
+ + "replies.attach,replies.txt, IFNULL(q.txt,t.txt) as quote 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 "
+ "WHERE replies.message_id=? AND replies.reply_id=?",
(rs, num) -> {
Message msg = new Message();
@@ -276,6 +280,10 @@ public class MessagesQueries {
msg.setDate(rs.getTimestamp(4));
msg.AttachmentType = rs.getString(5);
msg.setText(rs.getString(6));
+ String quote = rs.getString(7);
+ if (!StringUtils.isEmpty(quote)) {
+ msg.setReplyQuote(formatQuote(quote));
+ }
return msg;
}, mid, rid);
} catch (EmptyResultDataAccessException e) {
@@ -584,7 +592,7 @@ public class MessagesQueries {
+ "messages.readonly,messages.privacy,messages.replies,"
+ "messages.attach,messages.place_id,messages.lat,"
+ "messages.lon,messages.likes,messages.hidden,"
- + "messages_txt.tags,messages_txt.repliesby, messages_txt.txt "
+ + "messages_txt.tags,messages_txt.repliesby, messages_txt.txt, '' as q "
+ "FROM (messages INNER JOIN messages_txt "
+ "ON messages.message_id=messages_txt.message_id) "
+ "INNER JOIN users ON messages.user_id=users.id "
@@ -602,9 +610,14 @@ public class MessagesQueries {
"0 as readonly, 0 as privacy, 0 as replies," +
"replies.attach, 0 as place_id, 0 as lat," +
"0 as lon, 0 as likes, 0 as hidden," +
- "NULL as tags,NULL as repliesby, replies.txt " +
+ "NULL as tags,NULL as repliesby, replies.txt, " +
+ "IFNULL(qw.txt, t.txt) as q " +
"FROM replies INNER JOIN users " +
- "ON replies.user_id=users.id WHERE replies.message_id=? ORDER BY replies.reply_id ASC",
+ "ON replies.user_id=users.id " +
+ "LEFT JOIN replies qw ON replies.message_id=qw.message_id and replies.replyto=qw.reply_id " +
+ "LEFT JOIN messages_txt t on replies.message_id=t.message_id " +
+ "WHERE replies.message_id=? " +
+ "ORDER BY replies.reply_id ASC",
new MessageMapper(), mid, mid);
}
@@ -642,4 +655,13 @@ public class MessagesQueries {
return false;
}
+ private static String formatQuote(String quote) {
+ if (quote.length() > 50) {
+ quote = ">" + quote.substring(0, 47).replace('\n', ' ') + "...\n";
+ } else if (quote.length() > 0) {
+ quote = ">" + quote.replace('\n', ' ') + "\n";
+ }
+ return quote;
+ }
+
}