Промежуточная версия
This commit is contained in:
AidarKC
2025-12-17 13:06:08 +03:00
parent ab44cc5282
commit eaf1affb27
30 changed files with 926 additions and 563 deletions
@@ -1,7 +1,5 @@
package shine.db;
import shine.db.dao.ActiveSessionsDAO;
import shine.db.entities.ActiveSession;
import utils.config.AppConfig;
import java.nio.file.Files;
@@ -1,7 +1,7 @@
package shine.db.dao;
import shine.db.SqliteDbController;
import shine.db.entities.ActiveSession;
import shine.db.entities.ActiveSessionEntry;
import java.sql.*;
import java.util.ArrayList;
@@ -53,7 +53,7 @@ public final class ActiveSessionsDAO {
/**
* Вставка новой сессии.
*/
public void insert(ActiveSession session) throws SQLException {
public void insert(ActiveSessionEntry session) throws SQLException {
String sql = """
INSERT INTO active_sessions (
sessionId,
@@ -94,7 +94,7 @@ public final class ActiveSessionsDAO {
/**
* Получить сессию по sessionId.
*/
public ActiveSession getBySessionId(String sessionId) throws SQLException {
public ActiveSessionEntry getBySessionId(String sessionId) throws SQLException {
String sql = """
SELECT
sessionId,
@@ -128,7 +128,7 @@ public final class ActiveSessionsDAO {
/**
* Получить список всех активных сессий пользователя по loginId.
*/
public List<ActiveSession> getByLoginId(long loginId) throws SQLException {
public List<ActiveSessionEntry> getByLoginId(long loginId) throws SQLException {
String sql = """
SELECT
sessionId,
@@ -148,7 +148,7 @@ public final class ActiveSessionsDAO {
WHERE loginId = ?
""";
List<ActiveSession> result = new ArrayList<>();
List<ActiveSessionEntry> result = new ArrayList<>();
try (PreparedStatement ps = db.getConnection().prepareStatement(sql)) {
ps.setLong(1, loginId);
@@ -235,7 +235,7 @@ public final class ActiveSessionsDAO {
/**
* Маппинг ResultSet → ActiveSession (все 13 полей).
*/
private ActiveSession mapRow(ResultSet rs) throws SQLException {
private ActiveSessionEntry mapRow(ResultSet rs) throws SQLException {
String sessionId = rs.getString("sessionId");
long loginId = rs.getLong("loginId");
String sessionPwd = rs.getString("sessionPwd");
@@ -250,7 +250,7 @@ public final class ActiveSessionsDAO {
String clientInfoFromRequest = rs.getString("clientInfoFromRequest");
String userLanguage = rs.getString("userLanguage");
return new ActiveSession(
return new ActiveSessionEntry(
sessionId,
loginId,
sessionPwd,
@@ -1,7 +1,7 @@
package shine.db.dao;
import shine.db.SqliteDbController;
import shine.db.entities.SolanaUser;
import shine.db.entities.SolanaUserEntry;
import java.sql.*;
import java.util.ArrayList;
@@ -36,7 +36,7 @@ public final class SolanaUsersDAO {
return instance;
}
public void insert(SolanaUser user) throws SQLException {
public void insert(SolanaUserEntry user) throws SQLException {
String sql = """
INSERT INTO solana_users (login, loginId, bchId, loginKey, deviceKey, bchLimit)
VALUES (?, ?, ?, ?, ?, ?)
@@ -59,7 +59,7 @@ public final class SolanaUsersDAO {
}
}
public SolanaUser getByLoginId(long loginId) throws SQLException {
public SolanaUserEntry getByLoginId(long loginId) throws SQLException {
String sql = """
SELECT login, loginId, bchId, loginKey, deviceKey, bchLimit
FROM solana_users
@@ -76,7 +76,7 @@ public final class SolanaUsersDAO {
}
}
public SolanaUser getByLogin(String login) throws SQLException {
public SolanaUserEntry getByLogin(String login) throws SQLException {
String sql = """
SELECT login, loginId, bchId, loginKey, deviceKey, bchLimit
FROM solana_users
@@ -93,7 +93,7 @@ public final class SolanaUsersDAO {
}
}
public List<SolanaUser> searchByLoginPrefix(String prefix) throws SQLException {
public List<SolanaUserEntry> searchByLoginPrefix(String prefix) throws SQLException {
String sql = """
SELECT login, loginId, bchId, loginKey, deviceKey, bchLimit
FROM solana_users
@@ -102,7 +102,7 @@ public final class SolanaUsersDAO {
LIMIT 5
""";
List<SolanaUser> result = new ArrayList<>();
List<SolanaUserEntry> result = new ArrayList<>();
try (PreparedStatement ps = db.getConnection().prepareStatement(sql)) {
ps.setString(1, prefix.toLowerCase() + "%");
@@ -115,8 +115,8 @@ public final class SolanaUsersDAO {
return result;
}
private SolanaUser mapRow(ResultSet rs) throws SQLException {
return new SolanaUser(
private SolanaUserEntry mapRow(ResultSet rs) throws SQLException {
return new SolanaUserEntry(
rs.getLong("loginId"),
rs.getString("login"),
rs.getLong("bchId"),
@@ -1,7 +1,7 @@
package shine.db.dao;
import shine.db.SqliteDbController;
import shine.db.entities.UserParam;
import shine.db.entities.UserParamEntry;
import java.sql.*;
import java.util.ArrayList;
@@ -33,7 +33,7 @@ public final class UserParamsDAO {
* Если запись существует -> обновляем поля.
* Если нет -> вставляем новую запись.
*/
public void upsert(UserParam param) throws SQLException {
public void upsert(UserParamEntry param) throws SQLException {
String sql = """
INSERT INTO users_params (
loginId,
@@ -68,7 +68,7 @@ public final class UserParamsDAO {
/**
* Получить параметр по loginId + param.
*/
public UserParam getByUserIdAndParam(long loginId, String paramName) throws SQLException {
public UserParamEntry getByUserIdAndParam(long loginId, String paramName) throws SQLException {
String sql = """
SELECT
loginId,
@@ -95,7 +95,7 @@ public final class UserParamsDAO {
/**
* Получить все параметры пользователя.
*/
public List<UserParam> getByUserId(long loginId) throws SQLException {
public List<UserParamEntry> getByUserId(long loginId) throws SQLException {
String sql = """
SELECT
loginId,
@@ -110,7 +110,7 @@ public final class UserParamsDAO {
ORDER BY time_ms DESC
""";
List<UserParam> result = new ArrayList<>();
List<UserParamEntry> result = new ArrayList<>();
try (PreparedStatement ps = db.getConnection().prepareStatement(sql)) {
ps.setLong(1, loginId);
@@ -122,8 +122,8 @@ public final class UserParamsDAO {
return result;
}
private UserParam mapRow(ResultSet rs) throws SQLException {
return new UserParam(
private UserParamEntry mapRow(ResultSet rs) throws SQLException {
return new UserParamEntry(
rs.getLong("loginId"),
rs.getString("param"),
rs.getLong("bch_channel_id"),
@@ -20,7 +20,7 @@ package shine.db.entities;
* FOREIGN KEY (loginId) REFERENCES solana_users(loginId)
* );
*/
public class ActiveSession {
public class ActiveSessionEntry {
private String sessionId; // TEXT base64(32 bytes)
private long loginId; // INTEGER
@@ -38,22 +38,22 @@ public class ActiveSession {
private String clientInfoFromRequest; // строка, собранная на сервере
private String userLanguage; // prefer-language (например, "ru-RU")
public ActiveSession() {
public ActiveSessionEntry() {
}
public ActiveSession(String sessionId,
long loginId,
String sessionPwd,
String storagePwd,
long sessionCreatedAtMs,
long lastAuthirificatedAtMs,
String pushEndpoint,
String pushP256dhKey,
String pushAuthKey,
String clientIp,
String clientInfoFromClient,
String clientInfoFromRequest,
String userLanguage) {
public ActiveSessionEntry(String sessionId,
long loginId,
String sessionPwd,
String storagePwd,
long sessionCreatedAtMs,
long lastAuthirificatedAtMs,
String pushEndpoint,
String pushP256dhKey,
String pushAuthKey,
String clientIp,
String clientInfoFromClient,
String clientInfoFromRequest,
String userLanguage) {
this.sessionId = sessionId;
this.loginId = loginId;
this.sessionPwd = sessionPwd;
@@ -10,7 +10,7 @@ package shine.db.entities;
* - deviceKey публичный ключ устройства (второй ключ);
* - bchLimit лимит по количеству блоков / размеру цепочки (может быть null).
*/
public class SolanaUser {
public class SolanaUserEntry {
private long loginId;
private String login;
@@ -19,15 +19,15 @@ public class SolanaUser {
private String deviceKey; // раньше pubkey1
private Integer bchLimit; // может быть null
public SolanaUser() {
public SolanaUserEntry() {
}
public SolanaUser(long loginId,
String login,
long bchId,
String loginKey,
String deviceKey,
Integer bchLimit) {
public SolanaUserEntry(long loginId,
String login,
long bchId,
String loginKey,
String deviceKey,
Integer bchLimit) {
this.loginId = loginId;
this.login = login;
this.bchId = bchId;
@@ -1,6 +1,6 @@
package shine.db.entities;
public class UserParam {
public class UserParamEntry {
private long loginId;
private String param;
@@ -10,16 +10,16 @@ public class UserParam {
private short pubkeyNum;
private String signature;
public UserParam() {
public UserParamEntry() {
}
public UserParam(long loginId,
String param,
long bchChannelId,
String value,
long timeMs,
short pubkeyNum,
String signature) {
public UserParamEntry(long loginId,
String param,
long bchChannelId,
String value,
long timeMs,
short pubkeyNum,
String signature) {
this.loginId = loginId;
this.param = param;
this.bchChannelId = bchChannelId;