using adas_core.Application.Repositories.Interfaces;
using adas_core.Domain.Models.AppSettings;
using adas_core.Domain.Models.MongoModels;
using Microsoft.Extensions.Options;
using MongoDB.Driver;
namespace adas_core.Infrastructure.Repositories;
///
/// Repository for managing ConfigUnits in MongoDB. Provides methods to retrieve and manipulate ConfigUnits data.
///
public class ConfigUnitsRepository : MongoRepository, IConfigUnitsRepository
{
private readonly ApiSettings _apiSettings;
///
/// Initializes a new instance of the ConfigUnitsRepository class with the specified API settings and MongoDB database.
///
/// The API settings.
/// The MongoDB database.
/// Thrown when apiSettings is null.
public ConfigUnitsRepository(IOptions apiSettings, IMongoDatabase database) : base(database)
{
if (apiSettings == null) throw new ArgumentNullException(nameof(apiSettings));
_apiSettings = apiSettings.Value;
} //For testing
///
/// Gets the name of the MongoDB collection for ConfigUnits. This method retrieves the collection name from the API settings, or defaults to "config_units" if not specified.
///
/// The name of the MongoDB collection for ConfigUnits.
public override string GetCollectionName()
{
return _apiSettings.ConfigUnits ?? "config_units";
}
///
/// Finds a ConfigUnits document by its unique identifier. This method queries the MongoDB collection for a document with the specified ID and returns it if found, or null if not found.
///
/// The unique identifier of the ConfigUnits document.
/// The ConfigUnits document if found; otherwise, null.
public async Task FindById(string id)
{
var resutl = await Collection.FindAsync(Builders.Filter.Eq(x => x.Id, id));
return resutl.FirstOrDefault();
}
}