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; public class ConfigPumpsRepository : MongoRepository, IConfigPumpsRepository { private readonly ApiSettings _apiSettings; public ConfigPumpsRepository(IOptions apiSettings, IMongoDatabase database) : base(database) { if (apiSettings == null) throw new ArgumentNullException(nameof(apiSettings)); _apiSettings = apiSettings.Value; } //For testing public override string GetCollectionName() { return _apiSettings.ConfigPumps ?? "config_pumps"; } public async Task?> GetAllConfigs() { var result = await Collection.FindAsync(Builders.Filter.Empty); return result.ToList(); } public async Task FindById(string id) { var result = await Collection.FindAsync(Builders.Filter.Eq(x => x.Id, id)); return await result.FirstOrDefaultAsync(); } public async Task UpdateConfig(ConfigPumps config) { var filter = Builders.Filter.Eq("_id", config.Id); var update = Builders.Update.Set(c => c.Items, config.Items); return await Collection.FindOneAndUpdateAsync(filter, update, new FindOneAndUpdateOptions { ReturnDocument = ReturnDocument.After }); } public async Task DeleteConfig(ConfigPumps config) { var filter = Builders.Filter.Eq("_id", config.Id); await Collection.DeleteOneAsync(filter); var result = await FindById(config.Id); return result == null; } }