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

namespace adas_core.Application.Repositories.Interfaces;

public interface IRelayRepository : IMongoRepository<Relay>
{
    Task<Relay?> GetById(ObjectId relayId);
    List<Relay> GetRelayByTypeInList(List<ObjectId> configurationRelayList, RelayEnum.Type type);
    List<Relay> GetRelayInList(List<ObjectId> configurationRelayList);
    IFindFluent<Relay, Relay> GetPaginatedRelays(PaginationFilter filter);
    Task<Relay?> InsertOneRelayAsync(Relay request);
    Task<Relay?> UpdateRelayAsync(ObjectId objectId, Relay relay);
    Task<Relay?> GetByName(string? requestRelayName);
}