WIP: новая схема сообщений и push (не проверено)

This commit is contained in:
AidarKC
2026-04-19 20:41:58 +03:00
parent f0b560ec06
commit cc59bd18ee
27 changed files with 1668 additions and 94 deletions
@@ -496,6 +496,56 @@ public final class DatabaseInitializer {
ON signed_direct_messages_history (to_login, created_at_ms);
""");
// 13) signed_messages_v2 (универсальное хранилище блоков типов 1/2/3/4)
st.executeUpdate("""
CREATE TABLE IF NOT EXISTS signed_messages_v2 (
message_key TEXT NOT NULL PRIMARY KEY,
base_key TEXT NOT NULL,
target_login TEXT NOT NULL,
from_login TEXT NOT NULL,
to_login TEXT NOT NULL,
time_ms INTEGER NOT NULL,
nonce INTEGER NOT NULL,
message_type INTEGER NOT NULL,
raw_block BLOB NOT NULL,
created_at_ms INTEGER NOT NULL,
source_api TEXT NOT NULL,
origin_session_id TEXT,
receipt_ref_base_key TEXT,
receipt_ref_type INTEGER,
FOREIGN KEY (from_login) REFERENCES solana_users(login),
FOREIGN KEY (to_login) REFERENCES solana_users(login)
);
""");
st.executeUpdate("""
CREATE INDEX IF NOT EXISTS idx_signed_messages_v2_target
ON signed_messages_v2 (target_login, time_ms, created_at_ms);
""");
st.executeUpdate("""
CREATE INDEX IF NOT EXISTS idx_signed_messages_v2_base
ON signed_messages_v2 (base_key, message_type);
""");
// 14) signed_message_session_delivery (доставка по сессиям)
st.executeUpdate("""
CREATE TABLE IF NOT EXISTS signed_message_session_delivery (
message_key TEXT NOT NULL,
session_id TEXT NOT NULL,
delivered INTEGER NOT NULL DEFAULT 0,
delivered_at_ms INTEGER,
created_at_ms INTEGER NOT NULL,
PRIMARY KEY (message_key, session_id),
FOREIGN KEY (message_key) REFERENCES signed_messages_v2(message_key)
);
""");
st.executeUpdate("""
CREATE INDEX IF NOT EXISTS idx_signed_message_delivery_session
ON signed_message_session_delivery (session_id, delivered);
""");
DatabaseTriggersInstaller.createAllTriggers(st);
}
}