InMemoryPaymentRepository.java

package com.chronus.infrastructure.persistence;

import com.chronus.domain.entity.Payment;
import com.chronus.domain.repository.PaymentRepository;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;

/**
 * In-memory adapter for {@link PaymentRepository}.
 */
public class InMemoryPaymentRepository implements PaymentRepository {
    private final List<Payment> payments = new ArrayList<>();

    @Override
    public void save(Payment payment) {
        payments.add(payment);
    }

    @Override
    public List<Payment> findAll() {
        return List.copyOf(payments);
    }

    @Override
    public Optional<Payment> findById(String id) {
        return payments.stream()
                .filter(payment -> Objects.equals(payment.getPaymentId(), id))
                .findFirst();
    }
}