using adas_core.Domain.Enums;
using adas_core.Domain.Models.MongoModels;
using MongoDB.Bson;

namespace adas_core.Application.Repositories.Interfaces;

public interface IHistoricalConfigChangesRepository : IMongoRepository<HistoricalConfigChanges>
{
    Task<HistoricalConfigChanges?> FindById(ObjectId id);

    Task<HistoricalConfigChanges?> Update(HistoricalConfigChanges historicalConfigChange);

    Task<HistoricalConfigChanges?> Delete(ObjectId id);

    Task<List<ObjectId>> FindAllIds();

    Task<ICollection<HistoricalConfigChanges>> FindAll();
    new Task<HistoricalConfigChanges?> InsertOneAsync(HistoricalConfigChanges patientObservation);

    Task<ICollection<HistoricalConfigChanges>> FindLastHistoricalConfigChangesByType(
        DisplayConfigEnums.ConfigTypes cfgType, int num = 10);

    Task<ICollection<HistoricalConfigChanges>> FindLastHistoricalConfigChangesByUser(string user,
        DisplayConfigEnums.ConfigTypes? cfgType = null, int num = 10);
}