SHA256
Сервер: переименовать слой current users
This commit is contained in:
@@ -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)) {
|
||||
|
||||
+23
-23
@@ -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"));
|
||||
+6
-5
@@ -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,
|
||||
+2
-2
@@ -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()) {
|
||||
Reference in New Issue
Block a user