@@ -1,14 +1,14 @@
package uk.gov.pay.directdebit.mandate.dao.mapper;

import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import org.jdbi.v3.core.mapper.RowMapper;
import org.jdbi.v3.core.statement.StatementContext;
import uk.gov.pay.directdebit.mandate.model.Mandate;
import uk.gov.pay.directdebit.mandate.model.MandateState;

import java.sql.ResultSet;
import java.sql.SQLException;

public class MandateMapper implements ResultSetMapper<Mandate> {
public class MandateMapper implements RowMapper<Mandate> {

private static final String ID_COLUMN = "id";
private static final String EXTERNAL_ID_COLUMN = "external_id";
@@ -17,7 +17,7 @@ public class MandateMapper implements ResultSetMapper<Mandate> {
private static final String REFERENCE_COLUMN = "reference";

@Override
public Mandate map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException {
public Mandate map(ResultSet resultSet, StatementContext statementContext) throws SQLException {
return new Mandate(
resultSet.getLong(ID_COLUMN),
resultSet.getString(EXTERNAL_ID_COLUMN),
@@ -1,21 +1,19 @@
package uk.gov.pay.directdebit.payers.dao;

import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.BindBean;
import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import org.skife.jdbi.v2.sqlobject.customizers.SingleValueResult;
import org.jdbi.v3.sqlobject.config.RegisterRowMapper;
import org.jdbi.v3.sqlobject.customizer.Bind;
import org.jdbi.v3.sqlobject.customizer.BindBean;
import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys;
import org.jdbi.v3.sqlobject.statement.SqlQuery;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
import uk.gov.pay.directdebit.payers.dao.mapper.GoCardlessCustomerMapper;
import uk.gov.pay.directdebit.payers.model.GoCardlessCustomer;

import java.util.Optional;

@RegisterMapper(GoCardlessCustomerMapper.class)
@RegisterRowMapper(GoCardlessCustomerMapper.class)
public interface GoCardlessCustomerDao {
@SqlQuery("SELECT * FROM gocardless_customers g WHERE g.payer_id = :id")
@SingleValueResult(GoCardlessCustomer.class)
Optional<GoCardlessCustomer> findByPayerId(@Bind("id") Long id);

@SqlUpdate("INSERT INTO gocardless_customers(payer_id, customer_id, customer_bank_account_id) VALUES (:payerId, :customerId, :customerBankAccountId)")
@@ -1,35 +1,28 @@
package uk.gov.pay.directdebit.payers.dao;

import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.BindBean;
import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterArgumentFactory;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import org.skife.jdbi.v2.sqlobject.customizers.SingleValueResult;
import uk.gov.pay.directdebit.common.dao.DateArgumentFactory;
import org.jdbi.v3.sqlobject.config.RegisterRowMapper;
import org.jdbi.v3.sqlobject.customizer.Bind;
import org.jdbi.v3.sqlobject.customizer.BindBean;
import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys;
import org.jdbi.v3.sqlobject.statement.SqlQuery;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
import uk.gov.pay.directdebit.payers.dao.mapper.PayerMapper;
import uk.gov.pay.directdebit.payers.model.Payer;

import java.util.Optional;

@RegisterMapper(PayerMapper.class)
@RegisterRowMapper(PayerMapper.class)
public interface PayerDao {
@SqlQuery("SELECT * FROM payers p WHERE p.id = :id")
@SingleValueResult(Payer.class)
Optional<Payer> findById(@Bind("id") Long id);

@SqlQuery("SELECT * FROM payers p WHERE p.external_id = :externalId")
@SingleValueResult(Payer.class)
Optional<Payer> findByExternalId(@Bind("externalId") String externalId);

@SqlQuery("SELECT * FROM payers p WHERE p.payment_request_id = :paymentRequestId")
@SingleValueResult(Payer.class)
@SqlQuery("SELECT * FROM payers p WHERE p.payment_request_id = :paymentRequestId LIMIT 1")
Optional<Payer> findByPaymentRequestId(@Bind("paymentRequestId") Long paymentRequestId);

@SqlUpdate("INSERT INTO payers(payment_request_id, external_id, name, email, bank_account_number_last_two_digits, bank_account_requires_authorisation, bank_account_number, bank_account_sort_code, address_line1, address_line2, address_postcode, address_city, address_country, created_date ) VALUES (:paymentRequestId, :externalId, :name, :email, :accountNumberLastTwoDigits, :accountRequiresAuthorisation, :accountNumber, :sortCode, :addressLine1, :addressLine2, :addressPostcode, :addressCity, :addressCountry, :createdDate)")
@GetGeneratedKeys
@RegisterArgumentFactory(DateArgumentFactory.class)
Long insert(@BindBean Payer payer);
}
@@ -1,20 +1,20 @@
package uk.gov.pay.directdebit.payers.dao.mapper;

import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import org.jdbi.v3.core.mapper.RowMapper;
import org.jdbi.v3.core.statement.StatementContext;
import uk.gov.pay.directdebit.payers.model.GoCardlessCustomer;

import java.sql.ResultSet;
import java.sql.SQLException;

public class GoCardlessCustomerMapper implements ResultSetMapper<GoCardlessCustomer> {
public class GoCardlessCustomerMapper implements RowMapper<GoCardlessCustomer> {
private static final String ID_COLUMN = "id";
private static final String PAYER_ID_COLUMN = "payer_id";
private static final String CUSTOMER_ID_COLUMN = "customer_id";
private static final String CUSTOMER_BANK_ACCOUNT_ID_COLUMN = "customer_bank_account_id";

@Override
public GoCardlessCustomer map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException {
public GoCardlessCustomer map(ResultSet resultSet, StatementContext statementContext) throws SQLException {
return new GoCardlessCustomer(
resultSet.getLong(ID_COLUMN),
resultSet.getLong(PAYER_ID_COLUMN),
@@ -1,15 +1,15 @@
package uk.gov.pay.directdebit.payers.dao.mapper;

import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import org.jdbi.v3.core.mapper.RowMapper;
import org.jdbi.v3.core.statement.StatementContext;
import uk.gov.pay.directdebit.payers.model.Payer;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;

public class PayerMapper implements ResultSetMapper<Payer> {
public class PayerMapper implements RowMapper<Payer> {
private static final String ID_COLUMN = "id";
private static final String PAYMENT_REQUEST_ID_COLUMN = "payment_request_id";
private static final String EXTERNAL_ID_COLUMN = "external_id";
@@ -27,7 +27,7 @@ public class PayerMapper implements ResultSetMapper<Payer> {
private static final String CREATED_DATE_COLUMN = "created_date";

@Override
public Payer map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException {
public Payer map(ResultSet resultSet, StatementContext statementContext) throws SQLException {
return new Payer(
resultSet.getLong(ID_COLUMN),
resultSet.getLong(PAYMENT_REQUEST_ID_COLUMN),
@@ -1,29 +1,24 @@
package uk.gov.pay.directdebit.payments.dao;

import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.BindBean;
import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterArgumentFactory;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import org.skife.jdbi.v2.sqlobject.customizers.SingleValueResult;
import uk.gov.pay.directdebit.common.dao.DateArgumentFactory;
import org.jdbi.v3.sqlobject.config.RegisterRowMapper;
import org.jdbi.v3.sqlobject.customizer.Bind;
import org.jdbi.v3.sqlobject.customizer.BindBean;
import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys;
import org.jdbi.v3.sqlobject.statement.SqlQuery;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
import uk.gov.pay.directdebit.payments.dao.mapper.GoCardlessEventMapper;
import uk.gov.pay.directdebit.payments.model.GoCardlessEvent;

import java.util.Optional;

@RegisterMapper(GoCardlessEventMapper.class)
@RegisterRowMapper(GoCardlessEventMapper.class)
public interface GoCardlessEventDao {

@SqlUpdate("INSERT INTO gocardless_events(payment_request_events_id, event_id, action, resource_type, json, created_at) VALUES (:paymentRequestEventId, :eventId, :action, :resourceType, CAST(:json as jsonb), :createdAt)")
@GetGeneratedKeys
@RegisterArgumentFactory(DateArgumentFactory.class)
Long insert(@BindBean GoCardlessEvent goCardlessEvent);

@SqlQuery("SELECT * FROM gocardless_events g WHERE g.id = :id")
@SingleValueResult(GoCardlessEvent.class)
Optional<GoCardlessEvent> findById(@Bind("id") Long id);

@SqlUpdate("UPDATE gocardless_events t SET payment_request_events_id = :eventId WHERE t.id = :id")
@@ -1,31 +1,27 @@
package uk.gov.pay.directdebit.payments.dao;

import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.BindBean;
import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterArgumentFactory;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import org.skife.jdbi.v2.sqlobject.customizers.SingleValueResult;
import org.jdbi.v3.sqlobject.config.RegisterArgumentFactory;
import org.jdbi.v3.sqlobject.config.RegisterRowMapper;
import org.jdbi.v3.sqlobject.customizer.Bind;
import org.jdbi.v3.sqlobject.customizer.BindBean;
import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys;
import org.jdbi.v3.sqlobject.statement.SqlQuery;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
import uk.gov.pay.directdebit.common.dao.DateArgumentFactory;
import uk.gov.pay.directdebit.payments.dao.mapper.PaymentRequestMapper;
import uk.gov.pay.directdebit.payments.model.PaymentRequest;

import java.util.Optional;

@RegisterMapper(PaymentRequestMapper.class)
@RegisterRowMapper(PaymentRequestMapper.class)
public interface PaymentRequestDao {
@SqlQuery("SELECT * FROM payment_requests p WHERE p.id = :id")
@SingleValueResult(PaymentRequest.class)
Optional<PaymentRequest> findById(@Bind("id") Long id);

@SqlQuery("SELECT * FROM payment_requests p JOIN gateway_accounts g ON p.gateway_account_id = g.id WHERE p.external_id = :externalId AND g.external_id = :accountExternalId" )
@SingleValueResult(PaymentRequest.class)
@SqlQuery("SELECT * FROM payment_requests p JOIN gateway_accounts g ON p.gateway_account_id = g.id WHERE p.external_id = :externalId AND g.external_id = :accountExternalId")
Optional<PaymentRequest> findByExternalIdAndAccountExternalId(@Bind("externalId") String externalId, @Bind("accountExternalId") String accountExternalId);

@SqlUpdate("INSERT INTO payment_requests(external_id, gateway_account_id, amount, reference, description, return_url, created_date) VALUES (:externalId, :gatewayAccountId, :amount, :reference, :description, :returnUrl, :createdDate)")
@GetGeneratedKeys
@RegisterArgumentFactory(DateArgumentFactory.class)
Long insert(@BindBean PaymentRequest paymentRequest);
}
@@ -1,30 +1,26 @@
package uk.gov.pay.directdebit.payments.dao;

import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.BindBean;
import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterArgumentFactory;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import org.skife.jdbi.v2.sqlobject.customizers.SingleValueResult;
import uk.gov.pay.directdebit.common.dao.DateArgumentFactory;
import org.jdbi.v3.sqlobject.config.RegisterRowMapper;
import org.jdbi.v3.sqlobject.customizer.Bind;
import org.jdbi.v3.sqlobject.customizer.BindBean;
import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys;
import org.jdbi.v3.sqlobject.statement.SqlQuery;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
import uk.gov.pay.directdebit.payments.dao.mapper.PaymentRequestEventMapper;
import uk.gov.pay.directdebit.payments.model.PaymentRequestEvent;

import java.util.Optional;

import static uk.gov.pay.directdebit.payments.model.PaymentRequestEvent.*;
import static uk.gov.pay.directdebit.payments.model.PaymentRequestEvent.SupportedEvent;
import static uk.gov.pay.directdebit.payments.model.PaymentRequestEvent.Type;

@RegisterMapper(PaymentRequestEventMapper.class)
@RegisterRowMapper(PaymentRequestEventMapper.class)
public interface PaymentRequestEventDao {

@SqlUpdate("INSERT INTO payment_request_events(payment_request_id, event_type, event, event_date) VALUES (:paymentRequestId, :eventType, :event, :eventDate)")
@GetGeneratedKeys
@RegisterArgumentFactory(DateArgumentFactory.class)
Long insert(@BindBean PaymentRequestEvent paymentRequestevent);

@SqlQuery("SELECT * FROM payment_request_events e WHERE e.payment_request_id = :paymentRequestId and e.event_type = :eventType and e.event = :event")
@SingleValueResult(PaymentRequestEvent.class)
Optional<PaymentRequestEvent> findByPaymentRequestIdAndEvent(@Bind("paymentRequestId") Long paymentRequestId, @Bind("eventType") Type eventType, @Bind("event") SupportedEvent event);
}
@@ -1,12 +1,11 @@
package uk.gov.pay.directdebit.payments.dao;

import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.BindBean;
import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import org.skife.jdbi.v2.sqlobject.customizers.SingleValueResult;
import org.jdbi.v3.sqlobject.config.RegisterRowMapper;
import org.jdbi.v3.sqlobject.customizer.Bind;
import org.jdbi.v3.sqlobject.customizer.BindBean;
import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys;
import org.jdbi.v3.sqlobject.statement.SqlQuery;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
import uk.gov.pay.directdebit.gatewayaccounts.model.PaymentProvider;
import uk.gov.pay.directdebit.payments.dao.mapper.TransactionMapper;
import uk.gov.pay.directdebit.payments.model.PaymentState;
@@ -15,7 +14,7 @@
import java.util.List;
import java.util.Optional;

@RegisterMapper(TransactionMapper.class)
@RegisterRowMapper(TransactionMapper.class)
public interface TransactionDao {

@SqlQuery("SELECT\n" +
@@ -42,7 +41,6 @@ public interface TransactionDao {
"FROM transactions t JOIN payment_requests p ON p.id = t.payment_request_id\n" +
" JOIN gateway_accounts g ON p.gateway_account_id = g.id\n" +
"WHERE t.id = :id")
@SingleValueResult(Transaction.class)
Optional<Transaction> findById(@Bind("id") Long id);

@SqlQuery("SELECT\n" +
@@ -69,7 +67,6 @@ public interface TransactionDao {
"FROM transactions t JOIN payment_requests p ON p.id = t.payment_request_id\n" +
" JOIN gateway_accounts g ON p.gateway_account_id = g.id\n" +
"WHERE t.payment_request_id = :paymentRequestId")
@SingleValueResult(Transaction.class)
Optional<Transaction> findByPaymentRequestId(@Bind("paymentRequestId") Long paymentRequestId);

@SqlQuery("SELECT\n" +
@@ -96,7 +93,6 @@ public interface TransactionDao {
"FROM transactions t JOIN payment_requests p ON p.id = t.payment_request_id\n" +
" JOIN gateway_accounts g ON p.gateway_account_id = g.id\n" +
"WHERE p.external_id = :paymentRequestExternalId AND g.external_id = :accountExternalId")
@SingleValueResult(Transaction.class)
Optional<Transaction> findTransactionForExternalIdAndGatewayAccountExternalId(@Bind("paymentRequestExternalId") String paymentRequestExternalId, @Bind("accountExternalId") String accountExternalId);

@SqlQuery("SELECT\n" +
@@ -124,7 +120,6 @@ public interface TransactionDao {
" JOIN payment_requests p ON tr.payment_request_id = p.id\n" +
" JOIN gateway_accounts g ON p.gateway_account_id = g.id\n" +
"WHERE t.secure_redirect_token = :tokenId")
@SingleValueResult(Transaction.class)
Optional<Transaction> findByTokenId(@Bind("tokenId") String tokenId);

@SqlQuery("SELECT\n" +
@@ -179,7 +174,6 @@ public interface TransactionDao {
" JOIN payers p ON p.payment_request_id = t.payment_request_id\n" +
" JOIN mandates m ON m.payer_id = p.id\n" +
"WHERE m.id = :mandateId")
@SingleValueResult(Transaction.class)
Optional<Transaction> findByMandateId(@Bind("mandateId") Long mandateId);

@SqlUpdate("UPDATE transactions t SET state = :state WHERE t.id = :id")
@@ -1,7 +1,7 @@
package uk.gov.pay.directdebit.payments.dao.mapper;

import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import org.jdbi.v3.core.mapper.RowMapper;
import org.jdbi.v3.core.statement.StatementContext;
import uk.gov.pay.directdebit.payments.model.GoCardlessEvent;
import uk.gov.pay.directdebit.payments.model.GoCardlessResourceType;

@@ -10,7 +10,7 @@
import java.time.ZoneOffset;
import java.time.ZonedDateTime;

public class GoCardlessEventMapper implements ResultSetMapper<GoCardlessEvent> {
public class GoCardlessEventMapper implements RowMapper<GoCardlessEvent> {
private static final String ID_COLUMN = "id";
private static final String PAYMENT_REQUEST_EVENTS_ID_COLUMN = "payment_request_events_id";
private static final String EVENT_ID_COLUMN = "event_id";
@@ -20,7 +20,7 @@ public class GoCardlessEventMapper implements ResultSetMapper<GoCardlessEvent> {
private static final String CREATED_AT_COLUMN = "created_at";

@Override
public GoCardlessEvent map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException {
public GoCardlessEvent map(ResultSet resultSet, StatementContext statementContext) throws SQLException {
return new GoCardlessEvent(
resultSet.getLong(ID_COLUMN),
resultSet.getLong(PAYMENT_REQUEST_EVENTS_ID_COLUMN),
@@ -1,23 +1,23 @@
package uk.gov.pay.directdebit.payments.dao.mapper;

import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import org.jdbi.v3.core.mapper.RowMapper;
import org.jdbi.v3.core.statement.StatementContext;
import uk.gov.pay.directdebit.payments.model.PaymentRequestEvent;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;

public class PaymentRequestEventMapper implements ResultSetMapper<PaymentRequestEvent> {
public class PaymentRequestEventMapper implements RowMapper<PaymentRequestEvent> {
private static final String ID_COLUMN = "id";
private static final String PAYMENT_REQUEST_ID_COLUMN = "payment_request_id";
private static final String EVENT_TYPE_COLUMN = "event_type";
private static final String EVENT_COLUMN = "event";
private static final String EVENT_DATE_COLUMN = "event_date";

@Override
public PaymentRequestEvent map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException {
public PaymentRequestEvent map(ResultSet resultSet, StatementContext statementContext) throws SQLException {
return new PaymentRequestEvent(
resultSet.getLong(ID_COLUMN),
resultSet.getLong(PAYMENT_REQUEST_ID_COLUMN),
@@ -1,15 +1,15 @@
package uk.gov.pay.directdebit.payments.dao.mapper;

import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import org.jdbi.v3.core.mapper.RowMapper;
import org.jdbi.v3.core.statement.StatementContext;
import uk.gov.pay.directdebit.payments.model.PaymentRequest;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;

public class PaymentRequestMapper implements ResultSetMapper<PaymentRequest> {
public class PaymentRequestMapper implements RowMapper<PaymentRequest> {
private static final String ID_COLUMN = "id";
private static final String EXTERNAL_ID_COLUMN = "external_id";
private static final String GATEWAY_ACCOUNT_ID_COLUMN = "gateway_account_id";
@@ -20,7 +20,7 @@ public class PaymentRequestMapper implements ResultSetMapper<PaymentRequest> {
private static final String CREATED_DATE_COLUMN = "created_date";

@Override
public PaymentRequest map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException {
public PaymentRequest map(ResultSet resultSet, StatementContext statementContext) throws SQLException {
return new PaymentRequest(
resultSet.getLong(ID_COLUMN),
resultSet.getLong(AMOUNT_COLUMN),
@@ -1,15 +1,15 @@
package uk.gov.pay.directdebit.payments.dao.mapper;

import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import org.jdbi.v3.core.mapper.RowMapper;
import org.jdbi.v3.core.statement.StatementContext;
import uk.gov.pay.directdebit.gatewayaccounts.model.PaymentProvider;
import uk.gov.pay.directdebit.payments.model.PaymentState;
import uk.gov.pay.directdebit.payments.model.Transaction;

import java.sql.ResultSet;
import java.sql.SQLException;

public class TransactionMapper implements ResultSetMapper<Transaction> {
public class TransactionMapper implements RowMapper<Transaction> {

private static final String TRANSACTION_ID_COLUMN = "transaction_id";
private static final String TRANSACTION_AMOUNT_COLUMN = "transaction_amount";
@@ -25,7 +25,7 @@ public class TransactionMapper implements ResultSetMapper<Transaction> {
private static final String GATEWAY_ACCOUNT_PAYMENT_PROVIDER_COLUMN = "gateway_account_payment_provider";

@Override
public Transaction map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException {
public Transaction map(ResultSet resultSet, StatementContext statementContext) throws SQLException {
return new Transaction(
resultSet.getLong(TRANSACTION_ID_COLUMN),
resultSet.getLong(PAYMENT_REQUEST_ID_COLUMN),
@@ -1,26 +1,22 @@
package uk.gov.pay.directdebit.tokens.dao;


import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.BindBean;
import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import org.skife.jdbi.v2.sqlobject.customizers.SingleValueResult;
import org.jdbi.v3.sqlobject.config.RegisterRowMapper;
import org.jdbi.v3.sqlobject.customizer.Bind;
import org.jdbi.v3.sqlobject.customizer.BindBean;
import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys;
import org.jdbi.v3.sqlobject.statement.SqlQuery;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
import uk.gov.pay.directdebit.payments.model.Token;
import uk.gov.pay.directdebit.tokens.dao.mapper.TokenMapper;

import java.util.Optional;

@RegisterMapper(TokenMapper.class)
@RegisterRowMapper(TokenMapper.class)
public interface TokenDao {
@SqlQuery("SELECT * FROM tokens t WHERE t.secure_redirect_token = :token")
@SingleValueResult(Token.class)
Optional<Token> findByTokenId(@Bind("token") String token);

@SqlQuery("SELECT * FROM tokens t WHERE t.payment_request_id = :paymentRequestId")
@SingleValueResult(Token.class)
Optional<Token> findByPaymentId(@Bind("paymentRequestId") Long chargeId);

@SqlUpdate("INSERT INTO tokens(payment_request_id, secure_redirect_token) VALUES (:paymentRequestId, :token)")
@@ -1,19 +1,19 @@
package uk.gov.pay.directdebit.tokens.dao.mapper;

import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import org.jdbi.v3.core.mapper.RowMapper;
import org.jdbi.v3.core.statement.StatementContext;
import uk.gov.pay.directdebit.payments.model.Token;

import java.sql.ResultSet;
import java.sql.SQLException;

public class TokenMapper implements ResultSetMapper<Token> {
public class TokenMapper implements RowMapper<Token> {
private static final String ID_COLUMN = "id";
private static final String PAYMENT_REQUEST_ID_COLUMN = "payment_request_id";
private static final String TOKEN_COLUMN = "secure_redirect_token";

@Override
public Token map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException {
public Token map(ResultSet resultSet, StatementContext statementContext) throws SQLException {
return new Token(resultSet.getLong(ID_COLUMN), resultSet.getString(TOKEN_COLUMN), resultSet.getLong(PAYMENT_REQUEST_ID_COLUMN));
}
}
@@ -1,8 +1,8 @@
package uk.gov.pay.directdebit.common.fixtures;

import org.skife.jdbi.v2.DBI;
import org.jdbi.v3.core.Jdbi;

public interface DbFixture<F, E> {
F insert(DBI jdbi);
F insert(Jdbi jdbi);
E toEntity();
}
@@ -1,16 +1,16 @@
package uk.gov.pay.directdebit.junit;

import io.dropwizard.db.DataSourceFactory;
import io.dropwizard.jdbi.OptionalContainerFactory;
import org.skife.jdbi.v2.DBI;
import org.jdbi.v3.core.Jdbi;
import org.jdbi.v3.sqlobject.SqlObjectPlugin;
import uk.gov.pay.directdebit.util.DatabaseTestHelper;

public class TestContext {

private final String databaseUrl;
private final String databaseUser;
private final String databasePassword;
private DBI jdbi;
private Jdbi jdbi;
// This should be out of the text context really (since it is a specific class for this project)
// but is fine for now
private DatabaseTestHelper databaseTestHelper;
@@ -20,13 +20,13 @@ public TestContext(int port, DataSourceFactory dataSourceFactory) {
databaseUrl = dataSourceFactory.getUrl();
databaseUser = dataSourceFactory.getUser();
databasePassword = dataSourceFactory.getPassword();
jdbi = new DBI(databaseUrl, databaseUser, databasePassword);
jdbi.registerContainerFactory(new OptionalContainerFactory());
jdbi = Jdbi.create(databaseUrl, databaseUser, databasePassword);
jdbi.installPlugin(new SqlObjectPlugin());
this.databaseTestHelper = new DatabaseTestHelper(jdbi);
this.port = port;
}

public DBI getJdbi() {
public Jdbi getJdbi() {
return jdbi;
}

@@ -1,7 +1,7 @@
package uk.gov.pay.directdebit.mandate.fixtures;

import org.apache.commons.lang3.RandomUtils;
import org.skife.jdbi.v2.DBI;
import org.jdbi.v3.core.Jdbi;
import uk.gov.pay.directdebit.common.fixtures.DbFixture;
import uk.gov.pay.directdebit.common.util.RandomIdGenerator;
import uk.gov.pay.directdebit.mandate.model.GoCardlessMandate;
@@ -48,9 +48,9 @@ public GoCardlessMandateFixture withGoCardlessMandateId(String goCardlessMandate
}

@Override
public GoCardlessMandateFixture insert(DBI jdbi) {
public GoCardlessMandateFixture insert(Jdbi jdbi) {
jdbi.withHandle(h ->
h.update(
h.execute(
"INSERT INTO" +
" gocardless_mandates(\n" +
" id,\n" +
@@ -1,7 +1,7 @@
package uk.gov.pay.directdebit.mandate.fixtures;

import org.apache.commons.lang3.RandomUtils;
import org.skife.jdbi.v2.DBI;
import org.jdbi.v3.core.Jdbi;
import uk.gov.pay.directdebit.common.fixtures.DbFixture;
import uk.gov.pay.directdebit.common.util.RandomIdGenerator;
import uk.gov.pay.directdebit.mandate.model.GoCardlessPayment;
@@ -61,9 +61,9 @@ public GoCardlessPaymentFixture setChargeDate(LocalDate chargeDate) {
}

@Override
public GoCardlessPaymentFixture insert(DBI jdbi) {
public GoCardlessPaymentFixture insert(Jdbi jdbi) {
jdbi.withHandle(h ->
h.update(
h.execute(
"INSERT INTO" +
" gocardless_payments(\n" +
" id,\n" +
@@ -2,7 +2,7 @@

import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils;
import org.skife.jdbi.v2.DBI;
import org.jdbi.v3.core.Jdbi;
import uk.gov.pay.directdebit.common.fixtures.DbFixture;
import uk.gov.pay.directdebit.common.util.RandomIdGenerator;
import uk.gov.pay.directdebit.mandate.model.Mandate;
@@ -17,7 +17,6 @@ public class MandateFixture implements DbFixture<MandateFixture, Mandate> {
private MandateState state = MandateState.PENDING;

private MandateFixture() {

}

public static MandateFixture aMandateFixture() {
@@ -70,9 +69,9 @@ public MandateFixture withState(MandateState state) {
}

@Override
public MandateFixture insert(DBI jdbi) {
public MandateFixture insert(Jdbi jdbi) {
jdbi.withHandle(h ->
h.update(
h.execute(
"INSERT INTO" +
" mandates(\n" +
" id,\n" +
@@ -1,7 +1,7 @@
package uk.gov.pay.directdebit.payers.fixtures;

import org.apache.commons.lang3.RandomUtils;
import org.skife.jdbi.v2.DBI;
import org.jdbi.v3.core.Jdbi;
import uk.gov.pay.directdebit.common.fixtures.DbFixture;
import uk.gov.pay.directdebit.common.util.RandomIdGenerator;
import uk.gov.pay.directdebit.payers.model.GoCardlessCustomer;
@@ -54,9 +54,9 @@ public GoCardlessCustomerFixture withCustomerBankAccountId(String customerBankAc
}

@Override
public GoCardlessCustomerFixture insert(DBI jdbi) {
public GoCardlessCustomerFixture insert(Jdbi jdbi) {
jdbi.withHandle(h ->
h.update(
h.execute(
"INSERT INTO" +
" gocardless_customers(\n" +
" id,\n" +
@@ -2,7 +2,7 @@

import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils;
import org.skife.jdbi.v2.DBI;
import org.jdbi.v3.core.Jdbi;
import uk.gov.pay.directdebit.common.fixtures.DbFixture;
import uk.gov.pay.directdebit.common.util.RandomIdGenerator;
import uk.gov.pay.directdebit.payers.model.Payer;
@@ -170,9 +170,9 @@ public ZonedDateTime getCreatedDate() {
}

@Override
public PayerFixture insert(DBI jdbi) {
public PayerFixture insert(Jdbi jdbi) {
jdbi.withHandle(h ->
h.update(
h.execute(
"INSERT INTO" +
" payers(\n" +
" id,\n" +
@@ -2,7 +2,7 @@

import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils;
import org.skife.jdbi.v2.DBI;
import org.jdbi.v3.core.Jdbi;
import uk.gov.pay.directdebit.common.fixtures.DbFixture;
import uk.gov.pay.directdebit.common.util.RandomIdGenerator;
import uk.gov.pay.directdebit.gatewayaccounts.model.GatewayAccount;
@@ -84,9 +84,9 @@ public String getAnalyticsId() {
}

@Override
public GatewayAccountFixture insert(DBI jdbi) {
public GatewayAccountFixture insert(Jdbi jdbi) {
jdbi.withHandle(h ->
h.update(
h.execute(
"INSERT INTO" +
" gateway_accounts(\n" +
" id,\n" +
@@ -2,7 +2,7 @@

import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils;
import org.skife.jdbi.v2.DBI;
import org.jdbi.v3.core.Jdbi;
import uk.gov.pay.directdebit.common.fixtures.DbFixture;
import uk.gov.pay.directdebit.common.util.RandomIdGenerator;
import uk.gov.pay.directdebit.payments.model.GoCardlessEvent;
@@ -101,9 +101,9 @@ public GoCardlessEventFixture withCreatedAt(ZonedDateTime createdAt) {
}

@Override
public GoCardlessEventFixture insert(DBI jdbi) {
public GoCardlessEventFixture insert(Jdbi jdbi) {
jdbi.withHandle(h ->
h.update(
h.execute(
"INSERT INTO" +
" gocardless_events(\n" +
" id,\n" +
@@ -1,7 +1,7 @@
package uk.gov.pay.directdebit.payments.fixtures;

import org.apache.commons.lang3.RandomUtils;
import org.skife.jdbi.v2.DBI;
import org.jdbi.v3.core.Jdbi;
import uk.gov.pay.directdebit.common.fixtures.DbFixture;
import uk.gov.pay.directdebit.payments.model.PaymentRequestEvent;

@@ -74,9 +74,9 @@ public PaymentRequestEventFixture withEventDate(ZonedDateTime eventDate) {
}

@Override
public PaymentRequestEventFixture insert(DBI jdbi) {
public PaymentRequestEventFixture insert(Jdbi jdbi) {
jdbi.withHandle(h ->
h.update(
h.execute(
"INSERT INTO" +
" payment_request_events(\n" +
" id,\n" +
@@ -1,7 +1,7 @@
package uk.gov.pay.directdebit.payments.fixtures;

import org.apache.commons.lang3.RandomUtils;
import org.skife.jdbi.v2.DBI;
import org.jdbi.v3.core.Jdbi;
import uk.gov.pay.directdebit.common.fixtures.DbFixture;
import uk.gov.pay.directdebit.common.util.RandomIdGenerator;
import uk.gov.pay.directdebit.payments.model.PaymentRequest;
@@ -100,9 +100,9 @@ public Long getGatewayAccountId() {
}

@Override
public PaymentRequestFixture insert(DBI jdbi) {
public PaymentRequestFixture insert(Jdbi jdbi) {
jdbi.withHandle(h ->
h.update(
h.execute(
"INSERT INTO" +
" payment_requests(\n" +
" id,\n" +
@@ -2,7 +2,7 @@

import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils;
import org.skife.jdbi.v2.DBI;
import org.jdbi.v3.core.Jdbi;
import uk.gov.pay.directdebit.common.fixtures.DbFixture;
import uk.gov.pay.directdebit.common.util.RandomIdGenerator;
import uk.gov.pay.directdebit.gatewayaccounts.model.PaymentProvider;
@@ -146,9 +146,9 @@ public String getPaymentRequestDescription() {
}

@Override
public TransactionFixture insert(DBI jdbi) {
public TransactionFixture insert(Jdbi jdbi) {
jdbi.withHandle(h ->
h.update(
h.execute(
"INSERT INTO" +
" transactions(\n" +
" id,\n" +
@@ -1,7 +1,7 @@
package uk.gov.pay.directdebit.tokens.fixtures;

import org.apache.commons.lang3.RandomUtils;
import org.skife.jdbi.v2.DBI;
import org.jdbi.v3.core.Jdbi;
import uk.gov.pay.directdebit.common.fixtures.DbFixture;
import uk.gov.pay.directdebit.payments.model.Token;

@@ -36,10 +36,10 @@ public Long getPaymentRequestId() {
}

@Override
public TokenFixture insert(DBI jdbi) {
public TokenFixture insert(Jdbi jdbi) {
jdbi.withHandle(handle ->
handle
.createStatement("INSERT INTO tokens(payment_request_id, secure_redirect_token) VALUES (:payment_request_id, :secure_redirect_token)")
.createUpdate("INSERT INTO tokens(payment_request_id, secure_redirect_token) VALUES (:payment_request_id, :secure_redirect_token)")
.bind("payment_request_id", paymentRequestId)
.bind("secure_redirect_token", token)
.execute()
@@ -1,16 +1,15 @@
package uk.gov.pay.directdebit.util;

import org.skife.jdbi.v2.DBI;
import org.skife.jdbi.v2.util.StringColumnMapper;
import org.jdbi.v3.core.Jdbi;

import java.util.List;
import java.util.Map;

public class DatabaseTestHelper {

private DBI jdbi;
private Jdbi jdbi;

public DatabaseTestHelper(DBI jdbi) {
public DatabaseTestHelper(Jdbi jdbi) {
this.jdbi = jdbi;
}

@@ -19,7 +18,9 @@ public Map<String, Object> getTokenByPaymentRequestId(Long paymentRequestId) {
handle
.createQuery("SELECT * from tokens t WHERE t.payment_request_id = :payment_request_id ORDER BY t.id DESC")
.bind("payment_request_id", paymentRequestId)
.first()
.mapToMap()
.findFirst()
.get()
);
}

@@ -28,8 +29,9 @@ public String getTokenByPaymentRequestExternalId(String externalId) {
handle
.createQuery("SELECT secure_redirect_token from tokens t JOIN payment_requests p ON p.id = t.payment_request_id WHERE p.external_id = :external_id ORDER BY t.id DESC")
.bind("external_id", externalId)
.map(StringColumnMapper.INSTANCE)
.first()
.mapTo(String.class)
.findFirst()
.get()
);
}

@@ -38,7 +40,9 @@ public Map<String, Object> getPaymentRequestById(Long id) {
handle
.createQuery("SELECT * from payment_requests p WHERE p.id = :id")
.bind("id", id)
.first()
.mapToMap()
.findFirst()
.get()
);
}

@@ -47,7 +51,9 @@ public Map<String, Object> getPaymentRequestEventById(Long id) {
handle
.createQuery("SELECT * from payment_request_events p WHERE p.id = :id")
.bind("id", id)
.first()
.mapToMap()
.findFirst()
.get()
);
}

@@ -56,7 +62,9 @@ public Map<String, Object> getTransactionById(Long id) {
handle
.createQuery("SELECT * from transactions t WHERE t.id = :id")
.bind("id", id)
.first()
.mapToMap()
.findFirst()
.get()
);
}

@@ -65,7 +73,9 @@ public Map<String, Object> getPayerById(Long id) {
handle
.createQuery("SELECT * from payers p WHERE p.id = :id")
.bind("id", id)
.first()
.mapToMap()
.findFirst()
.get()
);
}

@@ -74,7 +84,9 @@ public Map<String, Object> getPayerByPaymentRequestExternalId(String externalId)
handle
.createQuery("SELECT p.* from payers p INNER JOIN payment_requests r ON p.payment_request_id = r.id WHERE r.external_id = :externalId")
.bind("externalId", externalId)
.first()
.mapToMap()
.findFirst()
.get()
);
}

@@ -83,7 +95,9 @@ public Map<String, Object> getMandateById(Long id) {
handle
.createQuery("SELECT * from mandates t WHERE t.id = :id")
.bind("id", id)
.first()
.mapToMap()
.findFirst()
.get()
);
}

@@ -92,7 +106,9 @@ public Map<String, Object> getGatewayAccountById(Long id) {
handle
.createQuery("SELECT * from gateway_accounts t WHERE t.id = :id")
.bind("id", id)
.first()
.mapToMap()
.findFirst()
.get()
);
}

@@ -101,7 +117,9 @@ public Map<String, Object> getGoCardlessCustomerById(Long id) {
handle
.createQuery("SELECT * from gocardless_customers g WHERE g.id = :id")
.bind("id", id)
.first()
.mapToMap()
.findFirst()
.get()
);
}

@@ -110,15 +128,20 @@ public Map<String, Object> getGoCardlessMandateById(Long id) {
handle
.createQuery("SELECT * from gocardless_mandates g WHERE g.id = :id")
.bind("id", id)
.first()
.mapToMap()
.findFirst()
.get()
);
}

public Map<String, Object> getGoCardlessPaymentById(Long id) {
return jdbi.withHandle(handle ->
handle
.createQuery("SELECT * from gocardless_payments g WHERE g.id = :id")
.bind("id", id)
.first()
.mapToMap()
.findFirst()
.get()
);
}

@@ -127,14 +150,17 @@ public Map<String, Object> getGoCardlessEventById(Long id) {
handle
.createQuery("SELECT * from gocardless_events g WHERE g.id = :id")
.bind("id", id)
.first()
.mapToMap()
.findFirst()
.get()
);
}

public List<Map<String, Object>> getAllGoCardlessEvents() {
return jdbi.withHandle(handle ->
handle
.createQuery("SELECT * from gocardless_events g")
.mapToMap()
.list()
);
}