45 lines
2.4 KiB
Markdown
45 lines
2.4 KiB
Markdown
# Структура БД SHiNE (кратко)
|
||
|
||
## Таблица `solana_users`
|
||
Локальная копия данных о пользователях из Solana.
|
||
|
||
Поля:
|
||
- `login` (TEXT) — логин пользователя.
|
||
- `loginId` (INTEGER, PK) — ID пользователя, основной ключ.
|
||
- `bchId` (INTEGER) — ID блокчейна пользователя.
|
||
- `pubkey0` (TEXT) — первый публичный ключ.
|
||
- `pubkey1` (TEXT) — второй публичный ключ.
|
||
- `bchLimit` (INTEGER, NULL) — произвольный лимит для пользователя (опционально).
|
||
|
||
---
|
||
|
||
## Таблица `active_sessions`
|
||
Активные сессии пользователей (WebSocket/WSS + Web Push).
|
||
|
||
Поля:
|
||
- `sessionId` (INTEGER, PK) — ID сессии, генерируется приложением.
|
||
- `session_pwd` (TEXT) — секрет/пароль сессии.
|
||
- `loginId` (INTEGER, FK → solana_users.loginId) — владелец сессии.
|
||
- `time_ms` (INTEGER) — время создания/активности сессии (мс от эпохи).
|
||
- `pubkey_num` (INTEGER) — номер ключа пользователя, которым подписывались данные.
|
||
- `push_endpoint` (TEXT, NULL) — endpoint Web Push.
|
||
- `push_p256dh_key` (TEXT, NULL) — p256dh-ключ Web Push.
|
||
- `push_auth_key` (TEXT, NULL) — auth-ключ Web Push.
|
||
|
||
---
|
||
|
||
## Таблица `users_params`
|
||
Сохранённые параметры и состояния пользователя (например, до какого сообщения прочитана лента).
|
||
|
||
Поля:
|
||
- `loginId` (INTEGER, FK → solana_users.loginId) — пользователь.
|
||
- `param` (TEXT) — имя параметра (ключ).
|
||
- `bch_channel_id` (INTEGER, DEFAULT 0) — ID канала/ленты который просмотрен.
|
||
- `value` (TEXT, NULL) — значение параметра (строка).
|
||
- `time_ms` (INTEGER) — время последнего обновления (мс от эпохи).
|
||
- `pubkey_num` (INTEGER) — номер ключа, которым подписано значение.
|
||
- `signature` (TEXT, NULL) — подпись значения.
|
||
|
||
Ограничения:
|
||
- `UNIQUE(loginId, param)` — у одного пользователя каждый `param` только один раз.
|