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; /// /// Provides a MongoDB-backed repository implementation for PoCMapping entities. /// /// public class PoCMappingRepository : MongoRepository, IPoCMappingRepository { private readonly ApiSettings _apiSettings; /// /// Initializes a new instance of the class, storing the resolved and forwarding the supplied to the base repository to support persistence of PoC mappings. /// /// The wrapper that exposes the application's . /// The instance passed to the base class to establish the MongoDB connection. /// public PoCMappingRepository(IOptions apiSettings, IMongoDatabase database) : base(database) { _apiSettings = apiSettings.Value; } //For testing /// /// Retrieves the name of the mappings collection from the API settings configuration. /// /// The mappings collection name as configured in _apiSettings. /// public override string GetCollectionName() { return _apiSettings.Mappings; } /// /// Asynchronously retrieves a from the underlying MongoDB collection by matching its against the supplied key, returning null when no matching document is found. /// /// The unique identifier (Id) of the to look up. /// A Task TResult containing the matching PoCMapping, or null if no document with the specified key exists in the collection. /// public async Task FindByKey(string key) { var filterBuilder = Builders.Filter; var filter = filterBuilder.Eq(config => config.Id, key); var result = await Collection.FindAsync(filter); return await result.FirstOrDefaultAsync(); } }