Сервер: переименовать слой current users

This commit is contained in:
AidarKC
2026-07-27 19:16:04 +04:00
parent 23748504e6
commit 0db3c3af5a
30 changed files with 118 additions and 117 deletions
@@ -1,7 +1,7 @@
package shine.db.dao;
import shine.db.DbController;
import shine.db.sql.SolanaUsersSql;
import shine.db.sql.CurrentUsersSql;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -49,8 +49,8 @@ public final class ConnectionsStateDAO {
AND cs.rel_type = ?
ORDER BY friend_login
""".formatted(
SolanaUsersSql.usersSubquery("u_login"),
SolanaUsersSql.usersSubquery("u_bch")
CurrentUsersSql.usersSubquery("u_login"),
CurrentUsersSql.usersSubquery("u_bch")
);
List<String> out = new ArrayList<>();
@@ -85,8 +85,8 @@ public final class ConnectionsStateDAO {
AND cs.rel_type = ?
ORDER BY friend_login
""".formatted(
SolanaUsersSql.usersSubquery("u_actor"),
SolanaUsersSql.usersSubquery("u_target")
CurrentUsersSql.usersSubquery("u_actor"),
CurrentUsersSql.usersSubquery("u_target")
);
List<String> out = new ArrayList<>();
@@ -123,7 +123,7 @@ public final class ConnectionsStateDAO {
AND b.rel_type = a.rel_type
)
ORDER BY u.login
""".formatted(SolanaUsersSql.usersSubquery("u"));
""".formatted(CurrentUsersSql.usersSubquery("u"));
List<String> out = new ArrayList<>();
try (PreparedStatement ps = c.prepareStatement(sql)) {
@@ -2,15 +2,15 @@ package shine.db.dao;
import shine.db.DbController;
import shine.db.KeyEncodingUtil;
import shine.db.entities.SolanaUserEntry;
import shine.db.sql.SolanaUsersSql;
import shine.db.entities.CurrentUserEntry;
import shine.db.sql.CurrentUsersSql;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/**
* SolanaUsersDAO совместимый runtime-доступ к текущему срезу пользователей.
* CurrentUsersDAO совместимый runtime-доступ к текущему срезу пользователей.
*
* Источник:
* - solana_user_pda_current
@@ -26,17 +26,17 @@ import java.util.List;
* - методы с Connection НЕ закрывают соединение
* - методы без Connection сами открывают и закрывают соединение
*/
public final class SolanaUsersDAO {
public final class CurrentUsersDAO {
private static volatile SolanaUsersDAO instance;
private static volatile CurrentUsersDAO instance;
private final DbController db = DbController.getInstance();
private SolanaUsersDAO() {}
private CurrentUsersDAO() {}
public static SolanaUsersDAO getInstance() {
public static CurrentUsersDAO getInstance() {
if (instance == null) {
synchronized (SolanaUsersDAO.class) {
if (instance == null) instance = new SolanaUsersDAO();
synchronized (CurrentUsersDAO.class) {
if (instance == null) instance = new CurrentUsersDAO();
}
}
return instance;
@@ -51,7 +51,7 @@ public final class SolanaUsersDAO {
FROM %s
WHERE LOWER(login) = LOWER(?)
LIMIT 1
""".formatted(SolanaUsersSql.usersSubquery("su"));
""".formatted(CurrentUsersSql.usersSubquery("su"));
try (PreparedStatement ps = c.prepareStatement(sql)) {
ps.setString(1, login);
@@ -75,7 +75,7 @@ public final class SolanaUsersDAO {
FROM %s
WHERE blockchain_name = ?
LIMIT 1
""".formatted(SolanaUsersSql.usersSubquery("su"));
""".formatted(CurrentUsersSql.usersSubquery("su"));
try (PreparedStatement ps = c.prepareStatement(sql)) {
ps.setString(1, blockchainName);
@@ -95,7 +95,7 @@ public final class SolanaUsersDAO {
// -------------------- SELECT --------------------
/** Получить по login (case-insensitive) с внешним соединением. Соединение НЕ закрывает. */
public SolanaUserEntry getByLogin(Connection c, String login) throws SQLException {
public CurrentUserEntry getByLogin(Connection c, String login) throws SQLException {
String sql = """
SELECT
login,
@@ -105,7 +105,7 @@ public final class SolanaUsersDAO {
client_key
FROM %s
WHERE LOWER(login) = LOWER(?)
""".formatted(SolanaUsersSql.usersSubquery("su"));
""".formatted(CurrentUsersSql.usersSubquery("su"));
try (PreparedStatement ps = c.prepareStatement(sql)) {
ps.setString(1, login);
@@ -117,14 +117,14 @@ public final class SolanaUsersDAO {
}
/** Получить по login (case-insensitive) без внешнего соединения. Сам открывает/закрывает. */
public SolanaUserEntry getByLogin(String login) throws SQLException {
public CurrentUserEntry getByLogin(String login) throws SQLException {
try (Connection c = db.getConnection()) {
return getByLogin(c, login);
}
}
/** Получить по blockchain_name (case-sensitive) с внешним соединением. Соединение НЕ закрывает. */
public SolanaUserEntry getByBlockchainName(Connection c, String blockchainName) throws SQLException {
public CurrentUserEntry getByBlockchainName(Connection c, String blockchainName) throws SQLException {
String sql = """
SELECT
login,
@@ -134,7 +134,7 @@ public final class SolanaUsersDAO {
client_key
FROM %s
WHERE blockchain_name = ?
""".formatted(SolanaUsersSql.usersSubquery("su"));
""".formatted(CurrentUsersSql.usersSubquery("su"));
try (PreparedStatement ps = c.prepareStatement(sql)) {
ps.setString(1, blockchainName);
@@ -146,14 +146,14 @@ public final class SolanaUsersDAO {
}
/** Получить по blockchain_name без внешнего соединения. */
public SolanaUserEntry getByBlockchainName(String blockchainName) throws SQLException {
public CurrentUserEntry getByBlockchainName(String blockchainName) throws SQLException {
try (Connection c = db.getConnection()) {
return getByBlockchainName(c, blockchainName);
}
}
/** Поиск по префиксу с внешним соединением. Соединение НЕ закрывает. */
public List<SolanaUserEntry> searchByLoginPrefix(Connection c, String prefix) throws SQLException {
public List<CurrentUserEntry> searchByLoginPrefix(Connection c, String prefix) throws SQLException {
String sql = """
SELECT
login,
@@ -165,9 +165,9 @@ public final class SolanaUsersDAO {
WHERE LOWER(login) LIKE ?
ORDER BY login
LIMIT 5
""".formatted(SolanaUsersSql.usersSubquery("su"));
""".formatted(CurrentUsersSql.usersSubquery("su"));
List<SolanaUserEntry> result = new ArrayList<>();
List<CurrentUserEntry> result = new ArrayList<>();
try (PreparedStatement ps = c.prepareStatement(sql)) {
ps.setString(1, prefix.toLowerCase() + "%");
@@ -180,7 +180,7 @@ public final class SolanaUsersDAO {
}
/** Поиск по префиксу без внешнего соединения. Сам открывает/закрывает. */
public List<SolanaUserEntry> searchByLoginPrefix(String prefix) throws SQLException {
public List<CurrentUserEntry> searchByLoginPrefix(String prefix) throws SQLException {
try (Connection c = db.getConnection()) {
return searchByLoginPrefix(c, prefix);
}
@@ -188,8 +188,8 @@ public final class SolanaUsersDAO {
// -------------------- MAPPER --------------------
private SolanaUserEntry mapRow(ResultSet rs) throws SQLException {
SolanaUserEntry e = new SolanaUserEntry();
private CurrentUserEntry mapRow(ResultSet rs) throws SQLException {
CurrentUserEntry e = new CurrentUserEntry();
e.setLogin(rs.getString("login"));
e.setBlockchainName(rs.getString("blockchain_name"));
@@ -3,9 +3,10 @@ package shine.db.entities;
import java.util.Base64;
/**
* SolanaUserEntry локальная запись пользователя из Solana.
* CurrentUserEntry локальная runtime-проекция текущего состояния пользователя.
*
* Таблица: solana_users
* Источник:
* - solana_user_pda_current
*
* Поля:
* - login PRIMARY KEY (TEXT)
@@ -14,7 +15,7 @@ import java.util.Base64;
* - blockchain_key TEXT NOT NULL
* - client_key TEXT NOT NULL
*/
public class SolanaUserEntry {
public class CurrentUserEntry {
private String login;
@@ -29,9 +30,9 @@ public class SolanaUserEntry {
/** Ключ устройства (публичный ключ устройства) */
private String clientKey;
public SolanaUserEntry() {}
public CurrentUserEntry() {}
public SolanaUserEntry(String login,
public CurrentUserEntry(String login,
String blockchainName,
String solanaKey,
String blockchainKey,
@@ -1,8 +1,8 @@
package shine.db.sql;
public final class SolanaUsersSql {
public final class CurrentUsersSql {
private SolanaUsersSql() {}
private CurrentUsersSql() {}
public static String usersSubquery(String alias) {
if (alias == null || alias.isBlank()) {