Added new endpoint for variants and temporal fix for reset cache
This commit is contained in:
		| @@ -63,5 +63,12 @@ namespace Core.Inventory.Provider.Contracts | ||||
|         /// <param name="cancellationToken">Cancellation token.</param> | ||||
|         /// <returns>The updated <see cref="FurnitureVariant"/>.</returns> | ||||
|         ValueTask<FurnitureVariant> ChangeStatusAsync(string _id, StatusEnum newStatus, CancellationToken cancellationToken); | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Retrieves all furniture variant entities. | ||||
|         /// </summary> | ||||
|         /// <param name="cancellationToken">Cancellation token.</param> | ||||
|         /// <returns>A list of all <see cref="FurnitureVariant"/> entities.</returns> | ||||
|         ValueTask<IEnumerable<FurnitureVariant>> GetAllAsync(CancellationToken cancellationToken); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -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<FurnitureBase>(); | ||||
|             await repository.InsertOneAsync(furnitureCollection); | ||||
|             await ResetCollectionCache(); | ||||
|             return furnitureCollection; | ||||
|         } | ||||
|  | ||||
| @@ -108,7 +110,20 @@ namespace Core.Inventory.Provider.Providers.Inventory | ||||
|         public async ValueTask<FurnitureBase> UpdateAsync(string id, FurnitureBase entity, CancellationToken cancellationToken) | ||||
|         { | ||||
|             await repository.ReplaceOneAsync(entity); | ||||
|             await ResetCollectionCache(); | ||||
|             return entity; | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Temporary method to "reset" collections cache | ||||
|         /// </summary> | ||||
|         /// <returns></returns> | ||||
|         private async Task ResetCollectionCache() | ||||
|         { | ||||
|             //TODO: remove this method when necessary. | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllFurnitureBases"); | ||||
|  | ||||
|             await cacheProvider.SetAsync(cacheKey, Enumerable.Empty<FurnitureBase>(), null); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -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<FurnitureVariant>(); | ||||
|             await repository.InsertOneAsync(variantCollection); | ||||
|             await ResetCollectionCache(); | ||||
|             return variantCollection; | ||||
|         } | ||||
|  | ||||
| @@ -137,7 +139,37 @@ namespace Core.Inventory.Provider.Providers.Inventory | ||||
|         public async ValueTask<FurnitureVariant> UpdateAsync(string id, FurnitureVariant entity, CancellationToken cancellationToken) | ||||
|         { | ||||
|             await repository.ReplaceOneAsync(entity); | ||||
|             await ResetCollectionCache(); | ||||
|             return entity; | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Retrieves all FurnitureVariant entries. | ||||
|         /// </summary> | ||||
|         /// <param name="cancellationToken">Cancellation token.</param> | ||||
|         /// <returns>A list of <see cref="FurnitureVariant"/>.</returns> | ||||
|         public async ValueTask<IEnumerable<FurnitureVariant>> GetAllAsync(CancellationToken cancellationToken) | ||||
|         { | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, nameof(GetAllAsync)); | ||||
|             var cachedData = await cacheProvider.GetAsync<IEnumerable<FurnitureVariant>>(cacheKey) ?? []; | ||||
|  | ||||
|             if (cachedData.Any()) return cachedData; | ||||
|  | ||||
|             var data = await repository.AsQueryable(); | ||||
|             await cacheProvider.SetAsync(cacheKey, data); | ||||
|             return data; | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Temporary method to "reset" collections cache | ||||
|         /// </summary> | ||||
|         /// <returns></returns> | ||||
|         private async Task ResetCollectionCache() | ||||
|         { | ||||
|             //TODO: remove this method when necessary. | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllFurnitureVariants"); | ||||
|  | ||||
|             await cacheProvider.SetAsync(cacheKey, Enumerable.Empty<FurnitureVariant>(), null); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user