up frontend

This commit is contained in:
2026-04-21 03:57:59 +03:00
parent b9d1afad42
commit 82a932dd2b
14 changed files with 492 additions and 172 deletions

View File

@@ -9,9 +9,7 @@ import io.vertx.sqlclient.Tuple;
import io.vertx.sqlclient.templates.SqlTemplate;
import org.mindrot.jbcrypt.BCrypt;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
public class UserService {
private final Pool pool;
@@ -159,16 +157,30 @@ public class UserService {
public Future<Void> updateProfile(int userId, String email, String password, String language) {
Map<String, Object> params = new HashMap<>();
params.put("id", userId);
params.put("email", email);
if (language != null) params.put("language", language);
String sql;
List<String> setClauses = new ArrayList<>();
if (email != null) {
setClauses.add("email = #{email}");
params.put("email", email);
}
if (password != null && !password.isEmpty()) {
String hash = BCrypt.hashpw(password, BCrypt.gensalt());
setClauses.add("password = #{password}");
params.put("password", hash);
sql = "UPDATE users SET email = #{email}, password = #{password}, language = COALESCE(#{language}, language) WHERE id = #{id}";
} else {
sql = "UPDATE users SET email = #{email}, language = COALESCE(#{language}, language) WHERE id = #{id}";
}
if (language != null) {
setClauses.add("language = #{language}");
params.put("language", language);
}
if (setClauses.isEmpty()) {
// Ни одно поле не обновляется — возвращаем успешный Future
return Future.succeededFuture();
}
String sql = "UPDATE users SET " + String.join(", ", setClauses) + " WHERE id = #{id}";
return SqlTemplate.forUpdate(pool, sql).execute(params).mapEmpty();
}