aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/juick/server/MessagesQueries.java44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/com/juick/server/MessagesQueries.java b/src/com/juick/server/MessagesQueries.java
index d2254575..c30bf50c 100644
--- a/src/com/juick/server/MessagesQueries.java
+++ b/src/com/juick/server/MessagesQueries.java
@@ -21,6 +21,7 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Types;
import java.util.ArrayList;
import java.util.Collections;
@@ -30,6 +31,49 @@ import java.util.Collections;
*/
public class MessagesQueries {
+ public static int createReply(Connection sql, int mid, int rid, int uid, String txt, String attachment) {
+ int newrid = getReplyIDIncrement(sql, mid);
+
+ PreparedStatement stmt = null;
+ try {
+ stmt = sql.prepareStatement("INSERT INTO replies(message_id,reply_id,user_id,replyto,attach,txt) VALUES (?,?,?,?,?,?)");
+ stmt.setInt(1, mid);
+ stmt.setInt(2, newrid);
+ stmt.setInt(3, uid);
+ stmt.setInt(4, rid);
+ if (attachment != null) {
+ stmt.setString(5, attachment);
+ } else {
+ stmt.setNull(5, Types.VARCHAR);
+ }
+ stmt.setString(6, txt);
+ if (stmt.executeUpdate() == 0) {
+ newrid = 0;
+ }
+ } catch (SQLException e) {
+ System.err.println(e);
+ } finally {
+ Utils.finishSQL(null, stmt);
+ }
+
+ return newrid;
+ }
+
+ public static int getReplyIDIncrement(Connection sql, int mid) {
+ int ret = 0;
+
+ SQLHelpers.execute(sql, "LOCK TABLES messages WRITE");
+
+ int rid = SQLHelpers.getInt(sql, "SELECT maxreplyid FROM messages WHERE message_id=?", mid, -1);
+ if (rid >= 0 && SQLHelpers.executeInt(sql, "UPDATE messages SET maxreplyid=maxreplyid+1 WHERE message_id=?", mid) == 1) {
+ ret = rid + 1;
+ }
+
+ SQLHelpers.execute(sql, "UNLOCK TABLES");
+
+ return ret;
+ }
+
public static boolean canViewThread(Connection sql, int mid, int uid) {
int privacy = 0;