using MongoDB.Bson;
using MongoDB.Driver;
using adas_core.Domain.Models.Pumps;

namespace adas_core.Application.Repositories.Interfaces
{
    public interface IPumpArchiveRepository
    {
        /// <summary>
        /// Devuelve la colección subyacente
        /// </summary>
        IMongoCollection<PumpObservation> Collection { get; }

        /// <summary>
        /// Inserta una observación de bomba en la colección de archivo.
        /// </summary>
        Task InsertAsync(PumpObservation obs);

        /// <summary>
        /// Inserta múltiples observaciones en la colección de archivo.
        /// </summary>
        Task InsertManyAsync(IEnumerable<PumpObservation> observations);

        /// <summary>
        /// Búsqueda por paciente para auditoría o restauración.
        /// </summary>
        Task<IEnumerable<PumpObservation>> FindByPatientIdAsync(ObjectId patientId,
            DateTime? from = null, DateTime? to = null, int? limit = null);
    }
}