using adas_core.Domain.Models;

namespace adas_core.Application.Repositories.Interfaces;

public interface IDiagnosisArchiveRepository
{
    /// <summary>
    /// Asynchronously inserts a new patient diagnosis record into the data store.
    /// </summary>
    /// <param name="patientDiagnosis">The patient diagnosis entity to be persisted.</param>
    /// <returns>A task that represents the asynchronous insert operation.</returns>
    Task InsertOneAsync(PatientDiagnosis patientDiagnosis);
    /// <summary>
    /// Asynchronously deletes items that occurred before the specified cutoff date.
    /// </summary>
    /// <param name="date">The cutoff date; items dated prior to this value will be deleted.</param>
    Task DeleteBeforeDate(DateTime date);
    /// <summary>
    /// Inserts a batch of patient diagnosis records into the data store.
    /// </summary>
    /// <param name="diagnosis">The collection of <see cref="PatientDiagnosis"/> entities to insert.</param>
    /// <returns>A <see cref="Task{TResult}"/> representing the asynchronous operation, containing the result of the batch insertion.</returns>
    Task<long> InsertBatch(IEnumerable<PatientDiagnosis> diagnosis);
}