Документы: Описание БД и всех запросов актуализировал!
This commit is contained in:
AidarKC
2026-01-05 17:17:39 +03:00
parent a6a5089379
commit 94777c58c6
6 changed files with 714 additions and 152 deletions
@@ -10,16 +10,26 @@ import java.util.List;
/**
* SolanaUsersDAO — локальная таблица пользователей из Solana.
*
* Колонки:
* - login TEXT (PK)
* - bchName TEXT
* - loginKey TEXT
* - deviceKey TEXT
* - bchLimit INTEGER (может быть NULL)
* Таблица: solana_users
*
* Правило:
* - методы с Connection НЕ закрывают соединение
* - методы без Connection сами открывают и закрывают соединение
* Колонки:
* - login TEXT PRIMARY KEY
* Уникальный логин пользователя (case-insensitive используется на уровне запросов).
*
* - deviceKey TEXT NOT NULL
* Публичный ключ устройства пользователя.
* Хранится в Base64(32 bytes) или HEX(64 chars).
*
* - solanaKey TEXT NULLABLE
* Публичный ключ Solana-аккаунта пользователя (если есть).
*
* Назначение таблицы:
* - локальное сопоставление login → deviceKey / solanaKey
* - используется для аутентификации, валидации подписей и связки с блокчейном
*
* Правило работы с соединениями:
* - методы с Connection НЕ закрывают соединение
* - методы без Connection сами открывают и закрывают соединение
*/
public final class SolanaUsersDAO {
@@ -3,15 +3,35 @@ package shine.db.entities;
import java.util.Base64;
/**
* Локальная копия пользователя из Solana.
* SolanaUserEntry — локальная запись пользователя из Solana.
*
* Теперь:
* Таблица: solana_users
*
* Поля:
* - login — PRIMARY KEY (TEXT)
* - bchName — имя/идентификатор персонального блокчейна (TEXT)
* - loginKey — публичный ключ логина
* - deviceKey — публичный ключ устройства
* - bchLimit — лимит (может быть null)
* Уникальный логин пользователя.
*
* - deviceKey — TEXT NOT NULL
* Публичный ключ устройства.
* Поддерживаемые форматы:
* • Base64 (32 байта)
* • HEX (64 hex-символа)
*
* - solanaKey — TEXT NULLABLE
* Публичный ключ Solana-аккаунта пользователя (если используется).
*
* Назначение:
* - хранение минимальной локальной информации о пользователе
* - используется для:
* • проверки подписи запросов
* • привязки пользователя к блокчейну
* • сопоставления login ↔ ключи
*
* ВАЖНО:
* - deviceKey обязателен всегда
* - solanaKey может отсутствовать (null)
*/
public class SolanaUserEntry {
private String login; // TEXT PK