diff --git a/Core.Inventory.DAL.API/Controllers/FurnitureVariantController.cs b/Core.Inventory.DAL.API/Controllers/FurnitureVariantController.cs
index 4fedebb..ffd86f1 100644
--- a/Core.Inventory.DAL.API/Controllers/FurnitureVariantController.cs
+++ b/Core.Inventory.DAL.API/Controllers/FurnitureVariantController.cs
@@ -25,10 +25,22 @@ namespace Core.Inventory.DAL.API.Controllers
[AllowAnonymous]
public class FurnitureVariantController(IFurnitureVariantProvider service) : ControllerBase
{
+
///
/// Gets all furniture variant records.
///
[HttpGet]
+ [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)]
+ public async Task GetAllAsync(CancellationToken cancellationToken)
+ {
+ var result = await service.GetAllAsync(cancellationToken);
+ return Ok(result);
+ }
+
+ ///
+ /// Gets all furniture variant records by ModelId.
+ ///
+ [HttpGet]
[Route("ByModel/{modelId}")]
[ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)]
public async Task GetAllVariantsByModelIdAsync(string modelId, CancellationToken cancellationToken)
diff --git a/Core.Inventory.Provider/Contracts/IFurnitureVariantProvider.cs b/Core.Inventory.Provider/Contracts/IFurnitureVariantProvider.cs
index bdbaf40..d3e72b5 100644
--- a/Core.Inventory.Provider/Contracts/IFurnitureVariantProvider.cs
+++ b/Core.Inventory.Provider/Contracts/IFurnitureVariantProvider.cs
@@ -63,5 +63,12 @@ namespace Core.Inventory.Provider.Contracts
/// Cancellation token.
/// The updated .
ValueTask ChangeStatusAsync(string _id, StatusEnum newStatus, CancellationToken cancellationToken);
+
+ ///
+ /// Retrieves all furniture variant entities.
+ ///
+ /// Cancellation token.
+ /// A list of all entities.
+ ValueTask> GetAllAsync(CancellationToken cancellationToken);
}
}
diff --git a/Core.Inventory.Provider/Providers/Inventory/FurnitureBaseProvider.cs b/Core.Inventory.Provider/Providers/Inventory/FurnitureBaseProvider.cs
index e288bc2..bf8017d 100644
--- a/Core.Inventory.Provider/Providers/Inventory/FurnitureBaseProvider.cs
+++ b/Core.Inventory.Provider/Providers/Inventory/FurnitureBaseProvider.cs
@@ -47,6 +47,7 @@ namespace Core.Inventory.Provider.Providers.Inventory
var entity = await repository.FindByIdAsync(mongoId);
entity.Status = newStatus;
await repository.ReplaceOneAsync(entity);
+ await ResetCollectionCache();
return entity;
}
@@ -60,6 +61,7 @@ namespace Core.Inventory.Provider.Providers.Inventory
{
var furnitureCollection = newFurniture.Adapt();
await repository.InsertOneAsync(furnitureCollection);
+ await ResetCollectionCache();
return furnitureCollection;
}
@@ -108,7 +110,20 @@ namespace Core.Inventory.Provider.Providers.Inventory
public async ValueTask UpdateAsync(string id, FurnitureBase entity, CancellationToken cancellationToken)
{
await repository.ReplaceOneAsync(entity);
+ await ResetCollectionCache();
return entity;
}
+
+ ///
+ /// Temporary method to "reset" collections cache
+ ///
+ ///
+ private async Task ResetCollectionCache()
+ {
+ //TODO: remove this method when necessary.
+ var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllFurnitureBases");
+
+ await cacheProvider.SetAsync(cacheKey, Enumerable.Empty(), null);
+ }
}
}
diff --git a/Core.Inventory.Provider/Providers/Inventory/FurnitureVariantProvider.cs b/Core.Inventory.Provider/Providers/Inventory/FurnitureVariantProvider.cs
index c5b0459..ef91a24 100644
--- a/Core.Inventory.Provider/Providers/Inventory/FurnitureVariantProvider.cs
+++ b/Core.Inventory.Provider/Providers/Inventory/FurnitureVariantProvider.cs
@@ -48,6 +48,7 @@ namespace Core.Inventory.Provider.Providers.Inventory
var entity = await repository.FindByIdAsync(mongoId);
entity.Status = newStatus;
await repository.ReplaceOneAsync(entity);
+ await ResetCollectionCache();
return entity;
}
@@ -61,6 +62,7 @@ namespace Core.Inventory.Provider.Providers.Inventory
{
var variantCollection = newVariant.Adapt();
await repository.InsertOneAsync(variantCollection);
+ await ResetCollectionCache();
return variantCollection;
}
@@ -137,7 +139,37 @@ namespace Core.Inventory.Provider.Providers.Inventory
public async ValueTask UpdateAsync(string id, FurnitureVariant entity, CancellationToken cancellationToken)
{
await repository.ReplaceOneAsync(entity);
+ await ResetCollectionCache();
return entity;
}
+
+ ///
+ /// Retrieves all FurnitureVariant entries.
+ ///
+ /// Cancellation token.
+ /// A list of .
+ public async ValueTask> GetAllAsync(CancellationToken cancellationToken)
+ {
+ var cacheKey = CacheKeyHelper.GenerateCacheKey(this, nameof(GetAllAsync));
+ var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? [];
+
+ if (cachedData.Any()) return cachedData;
+
+ var data = await repository.AsQueryable();
+ await cacheProvider.SetAsync(cacheKey, data);
+ return data;
+ }
+
+ ///
+ /// Temporary method to "reset" collections cache
+ ///
+ ///
+ private async Task ResetCollectionCache()
+ {
+ //TODO: remove this method when necessary.
+ var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllFurnitureVariants");
+
+ await cacheProvider.SetAsync(cacheKey, Enumerable.Empty(), null);
+ }
}
}