Сервер: дочистить PostgreSQL runtime и документацию

This commit is contained in:
AidarKC
2026-07-27 18:01:15 +04:00
parent b5116474c7
commit 618a30c2ab
20 changed files with 47 additions and 46 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ SHiNE-server — серверная часть мессенджера SHiNE: Web
- `shine-server-net-server/` — точка входа, запуск HTTP/WS сервера
- `shine-server-net-protocol/` — обработчики операций (RPC и события WS)
- `shine-server-db/` — DAO, SQL-схема, SQLite
- `shine-server-db/` — DAO, SQL-схема, PostgreSQL runtime
- `shine-server-blockchain/` — логика хранения и проверки блоков блокчейна
- `shine-server-crypto/` — криптографические утилиты
- `shine-server-config/` — конфигурация сервера
@@ -36,10 +36,6 @@ public final class DbController implements DbProvider {
return delegate.getConnection();
}
public boolean isPostgres() {
return true;
}
@Override
public void close() {
delegate.close();
@@ -7,7 +7,7 @@ import java.sql.SQLException;
/**
* Базовый JDBC provider поверх DriverManager.
*
* Не знает ничего про SQLite/PostgreSQL как про доменные режимы:
* Не знает ничего про конкретный доменный режим БД:
* конкретные параметры и post-connect инициализация задаются снаружи.
*/
public final class DriverManagerDbProvider implements DbProvider {
@@ -24,7 +24,7 @@ import java.sql.SQLException;
* - эта схема проще и прозрачнее, чем много обратных триггеров по разным таблицам;
* - если любой шаг не удался, делаем rollback и БД остаётся в исходном состоянии;
* - файловые действия (.bch / .tmp_bch) сознательно НЕ входят в эту транзакцию:
* SQLite не может атомарно закоммитить и SQL, и файловую систему сразу;
* SQL-транзакция и файловая система не коммитятся атомарно вместе;
* поэтому БД-чистка делается здесь, а файловая чистка будет следующим шагом
* отдельным recovery/resync-слоем после успешного commit.
*
@@ -14,7 +14,7 @@ import java.util.List;
* Таблица: solana_users
*
* Колонки:
* - login TEXT PRIMARY KEY (COLLATE NOCASE)
* - login TEXT PRIMARY KEY
* - blockchain_name TEXT NOT NULL
* - solana_key TEXT NOT NULL
* - blockchain_key TEXT NOT NULL
@@ -8,7 +8,7 @@ import java.util.Base64;
* Таблица: solana_users
*
* Поля:
* - login — PRIMARY KEY (TEXT) (case-insensitive на уровне COLLATE NOCASE)
* - login — PRIMARY KEY (TEXT)
* - blockchain_name — TEXT NOT NULL
* - solana_key — TEXT NOT NULL
* - blockchain_key — TEXT NOT NULL
@@ -81,4 +81,4 @@ public class SolanaUserEntry {
return null;
}
}
}
@@ -4,7 +4,7 @@
-- Назначение:
-- - поднять пустую PostgreSQL БД сервера SHiNE с нуля;
-- - включить таблицы модуля синхронизации Solana users;
-- - включить runtime-таблицы сервера без legacy SQLite таблиц:
-- - включить runtime-таблицы сервера без legacy-таблиц старого runtime:
-- * НЕ создаём solana_users
-- * НЕ создаём direct_messages
-- * основной runtime DM storage = signed_messages
@@ -12,7 +12,7 @@
-- Важно:
-- - источник истины по пользователям: solana_user_pda_current;
-- - runtime table blockchain_state остаётся как локальное серверное состояние chain,
-- но не мигрируется из старой SQLite и не считается identity-слоем;
-- но не мигрируется из старого локального runtime и не считается identity-слоем;
-- - триггеры переписаны под PostgreSQL и сохраняют текущую серверную логику.
BEGIN;
@@ -42,8 +42,7 @@ public class Net_AddCloseFriend_Handler implements JsonMessageHandler {
}
// Idempotent insert for close-friend relation.
// Using INSERT OR IGNORE avoids ON CONFLICT(column list) mismatches
// across DB instances with different UNIQUE schemas.
// Rely on PostgreSQL ON CONFLICT DO NOTHING.
insertCloseFriendIgnoreDuplicate(c, from, canonicalTo, targetBch);
Net_AddCloseFriend_Response resp = new Net_AddCloseFriend_Response();