From a2626dfdd0e4d010706e666063d8743dc048ae08710e73604fdd86f4f18fa975 Mon Sep 17 00:00:00 2001 From: AidarKC Date: Thu, 8 Jan 2026 14:13:44 +0300 Subject: [PATCH] =?UTF-8?q?08=2001=2025=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=81=D1=87=D1=91=D1=82=D1=87=D0=B8=D0=BA=20?= =?UTF-8?q?=D1=81=D0=BA=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D1=80=D0=B0=D0=B7?= =?UTF-8?q?=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D1=8F=D0=BB=D0=BE=D1=81=D1=8C?= =?UTF-8?q?=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/shine/db/DatabaseInitializer.java | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/shine-server-db/src/main/java/shine/db/DatabaseInitializer.java b/shine-server-db/src/main/java/shine/db/DatabaseInitializer.java index 96a207e..5ce7672 100644 --- a/shine-server-db/src/main/java/shine/db/DatabaseInitializer.java +++ b/shine-server-db/src/main/java/shine/db/DatabaseInitializer.java @@ -325,7 +325,7 @@ public class DatabaseInitializer { (int) MsgSubType.CONNECTION_UNBLOCK )); - // 9) message_stats (to_block_hash -> BLOB) + // 9) message_stats (to_block_hash -> BLOB) + edits_count st.executeUpdate(""" CREATE TABLE IF NOT EXISTS message_stats ( to_login TEXT NOT NULL, @@ -335,6 +335,7 @@ public class DatabaseInitializer { likes_count INTEGER NOT NULL DEFAULT 0, replies_count INTEGER NOT NULL DEFAULT 0, + edits_count INTEGER NOT NULL DEFAULT 0, UNIQUE ( to_login, @@ -417,17 +418,44 @@ public class DatabaseInitializer { END; """.formatted((int) MsgSubType.TEXT_REPLY)); - // 12) Trigger: EDIT — пометить исходный блок + // 12) Trigger: EDIT — пометить исходный блок + увеличить edits_count st.executeUpdate(""" CREATE TRIGGER IF NOT EXISTS trg_blocks_edit_apply_ai AFTER INSERT ON blocks WHEN NEW.msg_type = 1 AND NEW.msg_sub_type = %d BEGIN + -- 1) Как раньше: помечаем исходный блок, что его изменили последним edit'ом UPDATE blocks SET edited_by_block_global_number = NEW.block_global_number WHERE login = NEW.login AND bch_name = NEW.bch_name AND block_global_number = NEW.to_block_global_number; + + -- 2) Счётчик edits_count +1 в message_stats (upsert) + INSERT INTO message_stats ( + to_login, + to_bch_name, + to_block_global_number, + to_block_hash, + likes_count, + replies_count, + edits_count + ) + SELECT + substr(NEW.to_bch_name, 1, length(NEW.to_bch_name) - 3), + NEW.to_bch_name, + NEW.to_block_global_number, + NEW.to_block_hashe, + 0, + 0, + 1 + WHERE NEW.to_bch_name IS NOT NULL + AND length(NEW.to_bch_name) > 3 + AND NEW.to_block_global_number IS NOT NULL + AND NEW.to_block_hashe IS NOT NULL + ON CONFLICT(to_login, to_bch_name, to_block_global_number, to_block_hash) + DO UPDATE SET + edits_count = message_stats.edits_count + 1; END; """.formatted((int) MsgSubType.TEXT_EDIT)); }