
uk.co.mruoc.promo.repository.account.mysql.AccountClaimLoader Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of burger-promo Show documentation
Show all versions of burger-promo Show documentation
Burger promotion backend apis
The newest version!
package uk.co.mruoc.promo.repository.account.mysql;
import lombok.RequiredArgsConstructor;
import uk.co.mruoc.promo.entity.account.AccountNotFoundException;
import javax.sql.DataSource;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicLong;
@RequiredArgsConstructor
public class AccountClaimLoader {
private static final String SQL = "SELECT promo_id, claims FROM account_claim WHERE account_id = ?";
private final DataSource dataSource;
public Map loadAccountPromoClaims(String accountId) {
try (var connection = dataSource.getConnection()) {
try (var statement = connection.prepareStatement(SQL)) {
return toClaims(accountId, statement);
}
} catch (SQLException e) {
throw new AccountNotFoundException(e);
}
}
private static Map toClaims(String accountId, PreparedStatement statement) throws SQLException {
statement.setString(1, accountId);
try (var resultSet = statement.executeQuery()) {
return toClaims(resultSet);
}
}
private static Map toClaims(ResultSet rs) throws SQLException {
Map claims = new ConcurrentHashMap<>();
while (rs.next()) {
claims.put(rs.getString("promo_id"), new AtomicLong(rs.getLong("claims")));
}
return claims;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy