SHA256
05 01 25
добавил таблицу connections_state и тригер который ведёт в ней актуальное состояние всех связей! (и всё рабоатет - тесты проходят)
This commit is contained in:
@@ -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) — быстро получить сессии пользователя.
|
||||
|
||||
Reference in New Issue
Block a user