95 lines
6.6 KiB
Markdown
95 lines
6.6 KiB
Markdown
Документ: shine-server-bd — таблицы и структура
|
||
Таблицы (что хранят)
|
||
|
||
solana_users — локальная таблица пользователей (логин + ключ устройства + опциональный solanaKey).
|
||
|
||
active_sessions — активные сессии пользователей (секреты сессии, время, push-подписки, IP/клиент-инфо).
|
||
|
||
users_params — сохранённые параметры пользователя (например, состояние просмотренности лент и прочие настройки), с подписью.
|
||
|
||
ip_geo_cache — кэш геолокации по IP (чтобы не дергать внешние сервисы каждый раз).
|
||
|
||
blockchain_state — агрегатное “текущее состояние” блокчейна по blockchainName (лимит, размер, последние хэши/номера).
|
||
|
||
blocks — сохранённые блоки/сообщения блокчейна (байты блока + связи “кому/куда” для адресации).
|
||
|
||
solana_users — пользователи и их ключи
|
||
|
||
login TEXT — логин пользователя (PRIMARY KEY)
|
||
deviceKey TEXT — публичный ключ устройства (обязателен)
|
||
solanaKey TEXT — дополнительный ключ Solana (может быть NULL)
|
||
|
||
active_sessions — активные сессии пользователя
|
||
|
||
sessionId TEXT — идентификатор сессии (PRIMARY KEY)
|
||
login TEXT — логин владельца сессии (FK → solana_users.login)
|
||
sessionPwd TEXT — пароль/секрет сессии (используется сервером)
|
||
storagePwd TEXT — пароль/секрет для шифрования хранилища/данных
|
||
sessionCreatedAtMs INTEGER — время создания сессии (ms)
|
||
lastAuthirificatedAtMs INTEGER — время последней успешной аутентификации/refresh (ms)
|
||
pushEndpoint TEXT — endpoint для web-push (nullable)
|
||
pushP256dhKey TEXT — ключ p256dh для web-push (nullable)
|
||
pushAuthKey TEXT — auth key для web-push (nullable)
|
||
clientIp TEXT — IP клиента при auth/refresh (nullable)
|
||
clientInfoFromClient TEXT — строка client-info от клиента (nullable)
|
||
clientInfoFromRequest TEXT — строка client-info, собранная сервером (nullable)
|
||
userLanguage TEXT — предпочитаемый язык пользователя (nullable)
|
||
|
||
users_params — параметры/состояния пользователя
|
||
|
||
login TEXT — логин владельца параметра (FK → solana_users.login)
|
||
param TEXT — имя параметра (в паре с login образует UNIQUE)
|
||
bch_channel_id INTEGER — id канала/ленты/контекста блокчейна (по умолчанию 0)
|
||
value TEXT — значение параметра (nullable)
|
||
time_ms INTEGER — время обновления параметра (ms)
|
||
pubkey_num INTEGER — номер/индекс публичного ключа, которым подписано значение
|
||
signature TEXT — подпись значения параметра (строка)
|
||
|
||
ip_geo_cache — кэш геоданных по IP
|
||
|
||
ip TEXT — IP-адрес (PRIMARY KEY)
|
||
geo TEXT — строка гео-описания (“Country, City” и т.п.) (nullable)
|
||
updated_at_ms INTEGER — время последнего обновления (ms)
|
||
|
||
blockchain_state — текущее состояние блокчейна по blockchainName
|
||
|
||
blockchainName TEXT — имя/идентификатор блокчейна (PRIMARY KEY)
|
||
login TEXT — владелец блокчейна (FK → solana_users.login)
|
||
blockchainKey TEXT — публичный ключ блокчейна (используется для подписи блоков)
|
||
size_limit INTEGER — лимит размера блокчейн-файла (байты)
|
||
file_size_bytes INTEGER — текущий размер файла блокчейна (байты)
|
||
last_global_number INTEGER — номер последнего глобального блока (genesis обычно -1)
|
||
last_global_hash TEXT — хэш последнего глобального блока (пусто для “нулевого” состояния)
|
||
updated_at_ms INTEGER — время обновления состояния (ms)
|
||
line0_last_number INTEGER — последний номер в линии 0
|
||
line0_last_hash TEXT — последний хэш в линии 0
|
||
line1_last_number INTEGER — последний номер в линии 1
|
||
line1_last_hash TEXT — последний хэш в линии 1
|
||
line2_last_number INTEGER — последний номер в линии 2
|
||
line2_last_hash TEXT — последний хэш в линии 2
|
||
line3_last_number INTEGER — последний номер в линии 3
|
||
line3_last_hash TEXT — последний хэш в линии 3
|
||
line4_last_number INTEGER — последний номер в линии 4
|
||
line4_last_hash TEXT — последний хэш в линии 4
|
||
line5_last_number INTEGER — последний номер в линии 5
|
||
line5_last_hash TEXT — последний хэш в линии 5
|
||
line6_last_number INTEGER — последний номер в линии 6
|
||
line6_last_hash TEXT — последний хэш в линии 6
|
||
line7_last_number INTEGER — последний номер в линии 7
|
||
line7_last_hash TEXT — последний хэш в линии 7
|
||
|
||
blocks — блоки/сообщения блокчейна (байтовое тело + адресация)
|
||
|
||
login TEXT — владелец (FK → solana_users.login)
|
||
bchName TEXT — имя блокчейна (FK → blockchain_state.blockchainName)
|
||
blockGlobalNumber INTEGER — глобальный номер блока
|
||
blockGlobalPreHashe TEXT — предыдущий глобальный хэш (строка)
|
||
blockLineIndex INTEGER — индекс линии (0..7)
|
||
blockLineNumber INTEGER — номер блока внутри линии
|
||
blockLinePreHashe TEXT — предыдущий хэш внутри линии
|
||
msgType INTEGER — тип сообщения/записи (код)
|
||
blockByte BLOB — сырые байты блока (nullable)
|
||
to_login TEXT — адресат логин (nullable)
|
||
toBchName TEXT — адресат блокчейн (nullable)
|
||
toBlockGlobalNumber INTEGER — целевой глобальный номер (nullable)
|
||
toBlockHashe TEXT — целевой хэш (nullable) |