up frontend
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user