SHA256
Сервер: дочистить PostgreSQL runtime и документацию
This commit is contained in:
@@ -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();
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ import java.sql.SQLException;
|
||||
/**
|
||||
* Базовый JDBC provider поверх DriverManager.
|
||||
*
|
||||
* Не знает ничего про SQLite/PostgreSQL как про доменные режимы:
|
||||
* Не знает ничего про конкретный доменный режим БД:
|
||||
* конкретные параметры и post-connect инициализация задаются снаружи.
|
||||
*/
|
||||
public final class DriverManagerDbProvider implements DbProvider {
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-2
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user