добавил таблицу connections_state и тригер который ведёт в ней актуальное состояние всех связей! (и всё рабоатет - тесты проходят)
This commit is contained in:
AidarKC
2026-01-06 00:30:37 +03:00
parent 7ba333bf6c
commit eb922d918b
2 changed files with 120 additions and 10 deletions
+25
View File
@@ -96,6 +96,31 @@ toBchName — TEXT NULL — целевой блокчейн.
toBlockGlobalNumber — INTEGER NULL — целевой глобальный номер.
toBlockHashe — TEXT NULL — хэш целевого блока.
connections_state ⭐
Текущее состояние связей пользователя.
login — TEXT NOT NULL — владелец связи.
relType — INTEGER NOT NULL — тип связи:
10 = FRIEND, 20 = CONTACT, 30 = FOLLOW.
to_login — TEXT NOT NULL — с кем связь.
toBchName — TEXT NOT NULL — блокчейн цели.
toBlockGlobalNumber — INTEGER NULL — последний известный номер блока цели.
toBlockHashe — TEXT NULL — последний известный хэш блока цели.
Ограничение:
UNIQUE(login, relType, to_login) — одно актуальное состояние связи.
3) Триггер логики связей
Триггер trg_blocks_connection_state_ai срабатывает AFTER INSERT ON blocks:
если msgType = 3 (ConnectionBody)
msgSubType IN (10,20,30) →
добавить или обновить запись в connections_state
msgSubType IN (11,21,31) →
удалить соответствующую связь (10/20/30)
повторные добавления и удаления не вызывают ошибок
Таким образом:
blocks — журнал событий
connections_state — всегда актуальное состояние
Индексы (кратко, чтобы было понятно зачем)
idx_solana_users_login(login) — быстрый поиск по логину.
idx_active_sessions_login(login) — быстро получить сессии пользователя.