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(); } }