InMemoryPatientRepository.java

package com.chronus.infrastructure.persistence;

import com.chronus.domain.entity.Patient;
import com.chronus.domain.repository.PatientRepository;

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

/**
 * In-memory adapter for {@link PatientRepository}.
 */
public class InMemoryPatientRepository implements PatientRepository {
    private final List<Patient> patients = new ArrayList<>();

    @Override
    public void save(Patient patient) {
        patients.add(patient);
    }

    @Override
    public Optional<Patient> findById(String id) {
        return patients.stream()
                .filter(patient -> Objects.equals(patient.getPatientId(), id))
                .findFirst();
    }

    @Override
    public List<Patient> findAll() {
        return List.copyOf(patients);
    }
}