SHA256
19 12 25
Передел библиотеку работы с БД под только login и bchName
This commit is contained in:
@@ -37,7 +37,7 @@ public final class ActiveSessionsDAO {
|
||||
String sql = """
|
||||
INSERT INTO active_sessions (
|
||||
sessionId,
|
||||
loginId,
|
||||
login,
|
||||
sessionPwd,
|
||||
storagePwd,
|
||||
sessionCreatedAtMs,
|
||||
@@ -54,7 +54,7 @@ public final class ActiveSessionsDAO {
|
||||
|
||||
try (PreparedStatement ps = c.prepareStatement(sql)) {
|
||||
ps.setString(1, session.getSessionId());
|
||||
ps.setLong(2, session.getLoginId());
|
||||
ps.setString(2, session.getLogin());
|
||||
ps.setString(3, session.getSessionPwd());
|
||||
ps.setString(4, session.getStoragePwd());
|
||||
ps.setLong(5, session.getSessionCreatedAtMs());
|
||||
@@ -84,7 +84,7 @@ public final class ActiveSessionsDAO {
|
||||
String sql = """
|
||||
SELECT
|
||||
sessionId,
|
||||
loginId,
|
||||
login,
|
||||
sessionPwd,
|
||||
storagePwd,
|
||||
sessionCreatedAtMs,
|
||||
@@ -116,12 +116,12 @@ public final class ActiveSessionsDAO {
|
||||
}
|
||||
}
|
||||
|
||||
/** Получить список по loginId с внешним соединением. Соединение НЕ закрывает. */
|
||||
public List<ActiveSessionEntry> getByLoginId(Connection c, long loginId) throws SQLException {
|
||||
/** Получить список по login с внешним соединением. Соединение НЕ закрывает. */
|
||||
public List<ActiveSessionEntry> getByLogin(Connection c, String login) throws SQLException {
|
||||
String sql = """
|
||||
SELECT
|
||||
sessionId,
|
||||
loginId,
|
||||
login,
|
||||
sessionPwd,
|
||||
storagePwd,
|
||||
sessionCreatedAtMs,
|
||||
@@ -134,13 +134,13 @@ public final class ActiveSessionsDAO {
|
||||
clientInfoFromRequest,
|
||||
userLanguage
|
||||
FROM active_sessions
|
||||
WHERE loginId = ?
|
||||
WHERE login = ?
|
||||
""";
|
||||
|
||||
List<ActiveSessionEntry> result = new ArrayList<>();
|
||||
|
||||
try (PreparedStatement ps = c.prepareStatement(sql)) {
|
||||
ps.setLong(1, loginId);
|
||||
ps.setString(1, login);
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
while (rs.next()) result.add(mapRow(rs));
|
||||
}
|
||||
@@ -149,10 +149,10 @@ public final class ActiveSessionsDAO {
|
||||
return result;
|
||||
}
|
||||
|
||||
/** Получить список по loginId без внешнего соединения. Сам открывает/закрывает. */
|
||||
public List<ActiveSessionEntry> getByLoginId(long loginId) throws SQLException {
|
||||
/** Получить список по login без внешнего соединения. Сам открывает/закрывает. */
|
||||
public List<ActiveSessionEntry> getByLogin(String login) throws SQLException {
|
||||
try (Connection c = db.getConnection()) {
|
||||
return getByLoginId(c, loginId);
|
||||
return getByLogin(c, login);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -250,7 +250,7 @@ public final class ActiveSessionsDAO {
|
||||
|
||||
private ActiveSessionEntry mapRow(ResultSet rs) throws SQLException {
|
||||
String sessionId = rs.getString("sessionId");
|
||||
long loginId = rs.getLong("loginId");
|
||||
String login = rs.getString("login");
|
||||
String sessionPwd = rs.getString("sessionPwd");
|
||||
String storagePwd = rs.getString("storagePwd");
|
||||
long sessionCreatedAtMs = rs.getLong("sessionCreatedAtMs");
|
||||
@@ -265,7 +265,7 @@ public final class ActiveSessionsDAO {
|
||||
|
||||
return new ActiveSessionEntry(
|
||||
sessionId,
|
||||
loginId,
|
||||
login,
|
||||
sessionPwd,
|
||||
storagePwd,
|
||||
sessionCreatedAtMs,
|
||||
|
||||
@@ -13,7 +13,7 @@ import java.sql.*;
|
||||
* - методы без Connection сами открывают и закрывают соединение
|
||||
*
|
||||
* Важно:
|
||||
* - PRIMARY KEY: (loginId, blockchainId, blockGlobalNumber, blockLineIndex, blockLineNumber)
|
||||
* - PRIMARY KEY удалён (временно), поэтому "upsert" сделан через UPDATE->INSERT.
|
||||
*/
|
||||
public final class BlocksDAO {
|
||||
|
||||
@@ -37,8 +37,8 @@ public final class BlocksDAO {
|
||||
public void insert(Connection c, BlockEntry e) throws SQLException {
|
||||
String sql = """
|
||||
INSERT INTO blocks (
|
||||
loginId,
|
||||
blockchainId,
|
||||
login,
|
||||
bchName,
|
||||
blockGlobalNumber,
|
||||
blockGlobalPreHashe,
|
||||
blockLineIndex,
|
||||
@@ -46,8 +46,8 @@ public final class BlocksDAO {
|
||||
blockLinePreHashe,
|
||||
msgType,
|
||||
blockByte,
|
||||
toLoginId,
|
||||
toBlockchainId,
|
||||
to_login,
|
||||
toBchName,
|
||||
toBlockGlobalNumber,
|
||||
toBlockHashe
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
@@ -66,45 +66,15 @@ public final class BlocksDAO {
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------- UPSERT --------------------
|
||||
// -------------------- UPSERT (UPDATE -> INSERT) --------------------
|
||||
|
||||
/**
|
||||
* Сохранить (upsert) с внешним соединением. Соединение НЕ закрывает.
|
||||
* Если запись с таким PK уже есть — обновляем поля.
|
||||
* Сохранить (условный upsert) с внешним соединением. Соединение НЕ закрывает.
|
||||
* Без PK/UNIQUE делаем: UPDATE по "ключевым" полям -> если 0 строк, то INSERT.
|
||||
*/
|
||||
public void upsert(Connection c, BlockEntry e) throws SQLException {
|
||||
String sql = """
|
||||
INSERT INTO blocks (
|
||||
loginId,
|
||||
blockchainId,
|
||||
blockGlobalNumber,
|
||||
blockGlobalPreHashe,
|
||||
blockLineIndex,
|
||||
blockLineNumber,
|
||||
blockLinePreHashe,
|
||||
msgType,
|
||||
blockByte,
|
||||
toLoginId,
|
||||
toBlockchainId,
|
||||
toBlockGlobalNumber,
|
||||
toBlockHashe
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
ON CONFLICT(loginId, blockchainId, blockGlobalNumber, blockLineIndex, blockLineNumber)
|
||||
DO UPDATE SET
|
||||
blockGlobalPreHashe = excluded.blockGlobalPreHashe,
|
||||
blockLinePreHashe = excluded.blockLinePreHashe,
|
||||
msgType = excluded.msgType,
|
||||
blockByte = excluded.blockByte,
|
||||
toLoginId = excluded.toLoginId,
|
||||
toBlockchainId = excluded.toBlockchainId,
|
||||
toBlockGlobalNumber = excluded.toBlockGlobalNumber,
|
||||
toBlockHashe = excluded.toBlockHashe
|
||||
""";
|
||||
|
||||
try (PreparedStatement ps = c.prepareStatement(sql)) {
|
||||
bindAll(ps, e);
|
||||
ps.executeUpdate();
|
||||
}
|
||||
int updated = update(c, e);
|
||||
if (updated == 0) insert(c, e);
|
||||
}
|
||||
|
||||
/** Сохранить (upsert) без внешнего соединения. Сам открывает/закрывает. */
|
||||
@@ -116,18 +86,18 @@ public final class BlocksDAO {
|
||||
|
||||
// -------------------- SELECT --------------------
|
||||
|
||||
/** Получить блок по PK с внешним соединением. Соединение НЕ закрывает. */
|
||||
/** Получить блок по "PK-подобному" набору полей с внешним соединением. Соединение НЕ закрывает. */
|
||||
public BlockEntry getByPk(Connection c,
|
||||
long loginId,
|
||||
long blockchainId,
|
||||
String login,
|
||||
String bchName,
|
||||
int blockGlobalNumber,
|
||||
int blockLineIndex,
|
||||
int blockLineNumber) throws SQLException {
|
||||
|
||||
String sql = """
|
||||
SELECT
|
||||
loginId,
|
||||
blockchainId,
|
||||
login,
|
||||
bchName,
|
||||
blockGlobalNumber,
|
||||
blockGlobalPreHashe,
|
||||
blockLineIndex,
|
||||
@@ -135,22 +105,23 @@ public final class BlocksDAO {
|
||||
blockLinePreHashe,
|
||||
msgType,
|
||||
blockByte,
|
||||
toLoginId,
|
||||
toBlockchainId,
|
||||
to_login,
|
||||
toBchName,
|
||||
toBlockGlobalNumber,
|
||||
toBlockHashe
|
||||
FROM blocks
|
||||
WHERE
|
||||
loginId = ?
|
||||
AND blockchainId = ?
|
||||
login = ?
|
||||
AND bchName = ?
|
||||
AND blockGlobalNumber = ?
|
||||
AND blockLineIndex = ?
|
||||
AND blockLineNumber = ?
|
||||
LIMIT 1
|
||||
""";
|
||||
|
||||
try (PreparedStatement ps = c.prepareStatement(sql)) {
|
||||
ps.setLong(1, loginId);
|
||||
ps.setLong(2, blockchainId);
|
||||
ps.setString(1, login);
|
||||
ps.setString(2, bchName);
|
||||
ps.setInt(3, blockGlobalNumber);
|
||||
ps.setInt(4, blockLineIndex);
|
||||
ps.setInt(5, blockLineNumber);
|
||||
@@ -162,22 +133,22 @@ public final class BlocksDAO {
|
||||
}
|
||||
}
|
||||
|
||||
/** Получить блок по PK без внешнего соединения. Сам открывает/закрывает. */
|
||||
public BlockEntry getByPk(long loginId,
|
||||
long blockchainId,
|
||||
/** Получить блок по "PK-подобному" набору полей без внешнего соединения. Сам открывает/закрывает. */
|
||||
public BlockEntry getByPk(String login,
|
||||
String bchName,
|
||||
int blockGlobalNumber,
|
||||
int blockLineIndex,
|
||||
int blockLineNumber) throws SQLException {
|
||||
try (Connection c = db.getConnection()) {
|
||||
return getByPk(c, loginId, blockchainId, blockGlobalNumber, blockLineIndex, blockLineNumber);
|
||||
return getByPk(c, login, bchName, blockGlobalNumber, blockLineIndex, blockLineNumber);
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------- UPDATE --------------------
|
||||
|
||||
/**
|
||||
* Обновить (строго UPDATE) по PK с внешним соединением. Соединение НЕ закрывает.
|
||||
* Если строки нет — updateCount будет 0.
|
||||
* Обновить (строго UPDATE) по "PK-подобному" набору полей с внешним соединением. Соединение НЕ закрывает.
|
||||
* Может обновить >1 строк, если в таблице появились дубликаты.
|
||||
*/
|
||||
public int update(Connection c, BlockEntry e) throws SQLException {
|
||||
String sql = """
|
||||
@@ -187,13 +158,13 @@ public final class BlocksDAO {
|
||||
blockLinePreHashe = ?,
|
||||
msgType = ?,
|
||||
blockByte = ?,
|
||||
toLoginId = ?,
|
||||
toBlockchainId = ?,
|
||||
to_login = ?,
|
||||
toBchName = ?,
|
||||
toBlockGlobalNumber = ?,
|
||||
toBlockHashe = ?
|
||||
WHERE
|
||||
loginId = ?
|
||||
AND blockchainId = ?
|
||||
login = ?
|
||||
AND bchName = ?
|
||||
AND blockGlobalNumber = ?
|
||||
AND blockLineIndex = ?
|
||||
AND blockLineNumber = ?
|
||||
@@ -210,13 +181,15 @@ public final class BlocksDAO {
|
||||
if (bytes != null) ps.setBytes(i++, bytes);
|
||||
else ps.setNull(i++, Types.BLOB);
|
||||
|
||||
ps.setLong(i++, e.getToLoginId());
|
||||
ps.setInt(i++, e.getToBlockchainId());
|
||||
if (e.getToLogin() != null) ps.setString(i++, e.getToLogin());
|
||||
else ps.setNull(i++, Types.VARCHAR);
|
||||
|
||||
ps.setString(i++, nn(e.getToBchName()));
|
||||
ps.setInt(i++, e.getToBlockGlobalNumber());
|
||||
ps.setString(i++, nn(e.getToBlockHashe()));
|
||||
|
||||
ps.setLong(i++, e.getLoginId());
|
||||
ps.setLong(i++, e.getBlockchainId());
|
||||
ps.setString(i++, e.getLogin());
|
||||
ps.setString(i++, e.getBchName());
|
||||
ps.setInt(i++, e.getBlockGlobalNumber());
|
||||
ps.setInt(i++, e.getBlockLineIndex());
|
||||
ps.setInt(i++, e.getBlockLineNumber());
|
||||
@@ -234,10 +207,13 @@ public final class BlocksDAO {
|
||||
|
||||
// -------------------- DELETE --------------------
|
||||
|
||||
/** Удалить по PK с внешним соединением. Соединение НЕ закрывает. */
|
||||
/**
|
||||
* Удалить по "PK-подобному" набору полей с внешним соединением. Соединение НЕ закрывает.
|
||||
* Может удалить >1 строк, если есть дубликаты.
|
||||
*/
|
||||
public int deleteByPk(Connection c,
|
||||
long loginId,
|
||||
long blockchainId,
|
||||
String login,
|
||||
String bchName,
|
||||
int blockGlobalNumber,
|
||||
int blockLineIndex,
|
||||
int blockLineNumber) throws SQLException {
|
||||
@@ -245,16 +221,16 @@ public final class BlocksDAO {
|
||||
String sql = """
|
||||
DELETE FROM blocks
|
||||
WHERE
|
||||
loginId = ?
|
||||
AND blockchainId = ?
|
||||
login = ?
|
||||
AND bchName = ?
|
||||
AND blockGlobalNumber = ?
|
||||
AND blockLineIndex = ?
|
||||
AND blockLineNumber = ?
|
||||
""";
|
||||
|
||||
try (PreparedStatement ps = c.prepareStatement(sql)) {
|
||||
ps.setLong(1, loginId);
|
||||
ps.setLong(2, blockchainId);
|
||||
ps.setString(1, login);
|
||||
ps.setString(2, bchName);
|
||||
ps.setInt(3, blockGlobalNumber);
|
||||
ps.setInt(4, blockLineIndex);
|
||||
ps.setInt(5, blockLineNumber);
|
||||
@@ -262,25 +238,25 @@ public final class BlocksDAO {
|
||||
}
|
||||
}
|
||||
|
||||
/** Удалить по PK без внешнего соединения. Сам открывает/закрывает. */
|
||||
public int deleteByPk(long loginId,
|
||||
long blockchainId,
|
||||
/** Удалить по "PK-подобному" набору полей без внешнего соединения. Сам открывает/закрывает. */
|
||||
public int deleteByPk(String login,
|
||||
String bchName,
|
||||
int blockGlobalNumber,
|
||||
int blockLineIndex,
|
||||
int blockLineNumber) throws SQLException {
|
||||
try (Connection c = db.getConnection()) {
|
||||
return deleteByPk(c, loginId, blockchainId, blockGlobalNumber, blockLineIndex, blockLineNumber);
|
||||
return deleteByPk(c, login, bchName, blockGlobalNumber, blockLineIndex, blockLineNumber);
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------- INTERNAL --------------------
|
||||
|
||||
/** Единая привязка параметров под INSERT/UPSERT — чтобы не разъезжалось. */
|
||||
/** Единая привязка параметров под INSERT — чтобы не разъезжалось. */
|
||||
private static void bindAll(PreparedStatement ps, BlockEntry e) throws SQLException {
|
||||
int i = 1;
|
||||
|
||||
ps.setLong(i++, e.getLoginId());
|
||||
ps.setLong(i++, e.getBlockchainId());
|
||||
ps.setString(i++, e.getLogin());
|
||||
ps.setString(i++, e.getBchName());
|
||||
ps.setInt(i++, e.getBlockGlobalNumber());
|
||||
ps.setString(i++, nn(e.getBlockGlobalPreHashe()));
|
||||
|
||||
@@ -294,8 +270,10 @@ public final class BlocksDAO {
|
||||
if (bytes != null) ps.setBytes(i++, bytes);
|
||||
else ps.setNull(i++, Types.BLOB);
|
||||
|
||||
ps.setLong(i++, e.getToLoginId());
|
||||
ps.setInt(i++, e.getToBlockchainId());
|
||||
if (e.getToLogin() != null) ps.setString(i++, e.getToLogin());
|
||||
else ps.setNull(i++, Types.VARCHAR);
|
||||
|
||||
ps.setString(i++, nn(e.getToBchName()));
|
||||
ps.setInt(i++, e.getToBlockGlobalNumber());
|
||||
ps.setString(i++, nn(e.getToBlockHashe()));
|
||||
}
|
||||
@@ -303,8 +281,8 @@ public final class BlocksDAO {
|
||||
private BlockEntry mapRow(ResultSet rs) throws SQLException {
|
||||
BlockEntry e = new BlockEntry();
|
||||
|
||||
e.setLoginId(rs.getLong("loginId"));
|
||||
e.setBlockchainId(rs.getLong("blockchainId"));
|
||||
e.setLogin(rs.getString("login"));
|
||||
e.setBchName(rs.getString("bchName"));
|
||||
e.setBlockGlobalNumber(rs.getInt("blockGlobalNumber"));
|
||||
e.setBlockGlobalPreHashe(rs.getString("blockGlobalPreHashe"));
|
||||
|
||||
@@ -316,8 +294,8 @@ public final class BlocksDAO {
|
||||
|
||||
e.setBlockByte(rs.getBytes("blockByte"));
|
||||
|
||||
e.setToLoginId(rs.getLong("toLoginId"));
|
||||
e.setToBlockchainId(rs.getInt("toBlockchainId"));
|
||||
e.setToLogin(rs.getString("to_login"));
|
||||
e.setToBchName(rs.getString("toBchName"));
|
||||
e.setToBlockGlobalNumber(rs.getInt("toBlockGlobalNumber"));
|
||||
e.setToBlockHashe(rs.getString("toBlockHashe"));
|
||||
|
||||
|
||||
@@ -11,16 +11,15 @@ import java.util.List;
|
||||
* SolanaUsersDAO — локальная таблица пользователей из Solana.
|
||||
*
|
||||
* Колонки:
|
||||
* - login TEXT
|
||||
* - loginId INTEGER (PK)
|
||||
* - bchId INTEGER
|
||||
* - login TEXT (PK)
|
||||
* - bchName TEXT
|
||||
* - loginKey TEXT
|
||||
* - deviceKey TEXT
|
||||
* - bchLimit INTEGER (может быть NULL)
|
||||
*
|
||||
* * Правило:
|
||||
* * - методы с Connection НЕ закрывают соединение
|
||||
* * - методы без Connection сами открывают и закрывают соединение
|
||||
* Правило:
|
||||
* - методы с Connection НЕ закрывают соединение
|
||||
* - методы без Connection сами открывают и закрывают соединение
|
||||
*/
|
||||
public final class SolanaUsersDAO {
|
||||
|
||||
@@ -43,22 +42,18 @@ public final class SolanaUsersDAO {
|
||||
/** Вставка с внешним соединением. Соединение НЕ закрывает. */
|
||||
public void insert(Connection c, SolanaUserEntry user) throws SQLException {
|
||||
String sql = """
|
||||
INSERT INTO solana_users (login, loginId, bchId, loginKey, deviceKey, bchLimit)
|
||||
VALUES (?, ?, ?, ?, ?, ?)
|
||||
INSERT INTO solana_users (login, bchName, loginKey, deviceKey, bchLimit)
|
||||
VALUES (?, ?, ?, ?, ?)
|
||||
""";
|
||||
|
||||
try (PreparedStatement ps = c.prepareStatement(sql)) {
|
||||
ps.setString(1, user.getLogin());
|
||||
ps.setLong(2, user.getLoginId());
|
||||
ps.setLong(3, user.getBchId());
|
||||
ps.setString(4, user.getLoginKey());
|
||||
ps.setString(5, user.getDeviceKey());
|
||||
ps.setString(2, user.getBchName());
|
||||
ps.setString(3, user.getLoginKey());
|
||||
ps.setString(4, user.getDeviceKey());
|
||||
|
||||
if (user.getBchLimit() != null) {
|
||||
ps.setInt(6, user.getBchLimit());
|
||||
} else {
|
||||
ps.setNull(6, Types.INTEGER);
|
||||
}
|
||||
if (user.getBchLimit() != null) ps.setInt(5, user.getBchLimit());
|
||||
else ps.setNull(5, Types.INTEGER);
|
||||
|
||||
ps.executeUpdate();
|
||||
}
|
||||
@@ -73,34 +68,10 @@ public final class SolanaUsersDAO {
|
||||
|
||||
// -------------------- SELECT --------------------
|
||||
|
||||
/** Получить по loginId с внешним соединением. Соединение НЕ закрывает. */
|
||||
public SolanaUserEntry getByLoginId(Connection c, long loginId) throws SQLException {
|
||||
String sql = """
|
||||
SELECT login, loginId, bchId, loginKey, deviceKey, bchLimit
|
||||
FROM solana_users
|
||||
WHERE loginId = ?
|
||||
""";
|
||||
|
||||
try (PreparedStatement ps = c.prepareStatement(sql)) {
|
||||
ps.setLong(1, loginId);
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (!rs.next()) return null;
|
||||
return mapRow(rs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Получить по loginId без внешнего соединения. Сам открывает/закрывает. */
|
||||
public SolanaUserEntry getByLoginId(long loginId) throws SQLException {
|
||||
try (Connection c = db.getConnection()) {
|
||||
return getByLoginId(c, loginId);
|
||||
}
|
||||
}
|
||||
|
||||
/** Получить по login (case-insensitive) с внешним соединением. Соединение НЕ закрывает. */
|
||||
public SolanaUserEntry getByLogin(Connection c, String login) throws SQLException {
|
||||
String sql = """
|
||||
SELECT login, loginId, bchId, loginKey, deviceKey, bchLimit
|
||||
SELECT login, bchName, loginKey, deviceKey, bchLimit
|
||||
FROM solana_users
|
||||
WHERE LOWER(login) = LOWER(?)
|
||||
""";
|
||||
@@ -124,7 +95,7 @@ public final class SolanaUsersDAO {
|
||||
/** Поиск по префиксу с внешним соединением. Соединение НЕ закрывает. */
|
||||
public List<SolanaUserEntry> searchByLoginPrefix(Connection c, String prefix) throws SQLException {
|
||||
String sql = """
|
||||
SELECT login, loginId, bchId, loginKey, deviceKey, bchLimit
|
||||
SELECT login, bchName, loginKey, deviceKey, bchLimit
|
||||
FROM solana_users
|
||||
WHERE LOWER(login) LIKE ?
|
||||
ORDER BY login
|
||||
@@ -154,9 +125,8 @@ public final class SolanaUsersDAO {
|
||||
|
||||
private SolanaUserEntry mapRow(ResultSet rs) throws SQLException {
|
||||
return new SolanaUserEntry(
|
||||
rs.getLong("loginId"),
|
||||
rs.getString("login"),
|
||||
rs.getLong("bchId"),
|
||||
rs.getString("bchName"),
|
||||
rs.getString("loginKey"),
|
||||
rs.getString("deviceKey"),
|
||||
rs.getObject("bchLimit") != null ? rs.getInt("bchLimit") : null
|
||||
|
||||
@@ -30,7 +30,7 @@ public final class UserParamsDAO {
|
||||
public void upsert(Connection c, UserParamEntry param) throws SQLException {
|
||||
String sql = """
|
||||
INSERT INTO users_params (
|
||||
loginId,
|
||||
login,
|
||||
param,
|
||||
bch_channel_id,
|
||||
value,
|
||||
@@ -38,7 +38,7 @@ public final class UserParamsDAO {
|
||||
pubkey_num,
|
||||
signature
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
||||
ON CONFLICT(loginId, param)
|
||||
ON CONFLICT(login, param)
|
||||
DO UPDATE SET
|
||||
bch_channel_id = excluded.bch_channel_id,
|
||||
value = excluded.value,
|
||||
@@ -48,7 +48,7 @@ public final class UserParamsDAO {
|
||||
""";
|
||||
|
||||
try (PreparedStatement ps = c.prepareStatement(sql)) {
|
||||
ps.setLong(1, param.getLoginId());
|
||||
ps.setString(1, param.getLogin());
|
||||
ps.setString(2, param.getParam());
|
||||
ps.setLong(3, param.getBchChannelId());
|
||||
ps.setString(4, param.getValue());
|
||||
@@ -69,10 +69,10 @@ public final class UserParamsDAO {
|
||||
// -------------------- SELECT --------------------
|
||||
|
||||
/** Получить параметр с внешним соединением. Соединение НЕ закрывает. */
|
||||
public UserParamEntry getByUserIdAndParam(Connection c, long loginId, String paramName) throws SQLException {
|
||||
public UserParamEntry getByUserLoginAndParam(Connection c, String login, String paramName) throws SQLException {
|
||||
String sql = """
|
||||
SELECT
|
||||
loginId,
|
||||
login,
|
||||
param,
|
||||
bch_channel_id,
|
||||
value,
|
||||
@@ -80,11 +80,11 @@ public final class UserParamsDAO {
|
||||
pubkey_num,
|
||||
signature
|
||||
FROM users_params
|
||||
WHERE loginId = ? AND param = ?
|
||||
WHERE login = ? AND param = ?
|
||||
""";
|
||||
|
||||
try (PreparedStatement ps = c.prepareStatement(sql)) {
|
||||
ps.setLong(1, loginId);
|
||||
ps.setString(1, login);
|
||||
ps.setString(2, paramName);
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
if (!rs.next()) return null;
|
||||
@@ -94,17 +94,17 @@ public final class UserParamsDAO {
|
||||
}
|
||||
|
||||
/** Получить параметр без внешнего соединения. Сам открывает/закрывает. */
|
||||
public UserParamEntry getByUserIdAndParam(long loginId, String paramName) throws SQLException {
|
||||
public UserParamEntry getByUserLoginAndParam(String login, String paramName) throws SQLException {
|
||||
try (Connection c = db.getConnection()) {
|
||||
return getByUserIdAndParam(c, loginId, paramName);
|
||||
return getByUserLoginAndParam(c, login, paramName);
|
||||
}
|
||||
}
|
||||
|
||||
/** Получить все параметры пользователя с внешним соединением. Соединение НЕ закрывает. */
|
||||
public List<UserParamEntry> getByUserId(Connection c, long loginId) throws SQLException {
|
||||
public List<UserParamEntry> getByUserLogin(Connection c, String login) throws SQLException {
|
||||
String sql = """
|
||||
SELECT
|
||||
loginId,
|
||||
login,
|
||||
param,
|
||||
bch_channel_id,
|
||||
value,
|
||||
@@ -112,14 +112,14 @@ public final class UserParamsDAO {
|
||||
pubkey_num,
|
||||
signature
|
||||
FROM users_params
|
||||
WHERE loginId = ?
|
||||
WHERE login = ?
|
||||
ORDER BY time_ms DESC
|
||||
""";
|
||||
|
||||
List<UserParamEntry> result = new ArrayList<>();
|
||||
|
||||
try (PreparedStatement ps = c.prepareStatement(sql)) {
|
||||
ps.setLong(1, loginId);
|
||||
ps.setString(1, login);
|
||||
try (ResultSet rs = ps.executeQuery()) {
|
||||
while (rs.next()) result.add(mapRow(rs));
|
||||
}
|
||||
@@ -129,9 +129,9 @@ public final class UserParamsDAO {
|
||||
}
|
||||
|
||||
/** Получить все параметры пользователя без внешнего соединения. Сам открывает/закрывает. */
|
||||
public List<UserParamEntry> getByUserId(long loginId) throws SQLException {
|
||||
public List<UserParamEntry> getByUserLogin(String login) throws SQLException {
|
||||
try (Connection c = db.getConnection()) {
|
||||
return getByUserId(c, loginId);
|
||||
return getByUserLogin(c, login);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ public final class UserParamsDAO {
|
||||
|
||||
private UserParamEntry mapRow(ResultSet rs) throws SQLException {
|
||||
return new UserParamEntry(
|
||||
rs.getLong("loginId"),
|
||||
rs.getString("login"),
|
||||
rs.getString("param"),
|
||||
rs.getLong("bch_channel_id"),
|
||||
rs.getString("value"),
|
||||
|
||||
Reference in New Issue
Block a user