From c1204b67b2ee15b53d10bc72a1fcb801573872ee Mon Sep 17 00:00:00 2001 From: Maksym Sadovnychyy Date: Thu, 14 Nov 2024 13:40:44 +0100 Subject: [PATCH] (feature): dapr statestore handling --- src/MaksIT.Core.Dapr/DaprService.cs | 65 ++++++++++++++++++++ src/MaksIT.Core.Dapr/MaksIT.Core.Dapr.csproj | 2 +- 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/src/MaksIT.Core.Dapr/DaprService.cs b/src/MaksIT.Core.Dapr/DaprService.cs index 523863d..0f78b82 100644 --- a/src/MaksIT.Core.Dapr/DaprService.cs +++ b/src/MaksIT.Core.Dapr/DaprService.cs @@ -1,11 +1,15 @@ using Microsoft.Extensions.Logging; using Dapr.Client; + using MaksIT.Results; namespace MaksIT.Core.Dapr; public interface IDaprService { Task PublishEventAsync(string pubSubName, string topicName, string payload); + Task SaveStateAsync(string storeName, string key, T value); + Task> GetStateAsync(string storeName, string key); + Task DeleteStateAsync(string storeName, string key); } public class DaprService : IDaprService { @@ -22,6 +26,13 @@ public class DaprService : IDaprService { _client = client; } + /// + /// Publishes an event to a Dapr topic + /// + /// + /// + /// + /// public async Task PublishEventAsync(string pubSubName, string topicName, string payload) { try { await _client.PublishEventAsync(pubSubName, topicName, payload); @@ -32,4 +43,58 @@ public class DaprService : IDaprService { return Result.InternalServerError(ex.Message); } } + + /// + /// Saves a state to a Dapr state store + /// + /// + /// + /// + /// + /// + public async Task SaveStateAsync(string storeName, string key, T value) { + try { + await _client.SaveStateAsync(storeName, key, value); + return Result.Ok(); + } + catch (Exception ex) { + _logger.LogError(ex, _errorMessage); + return Result.InternalServerError(ex.Message); + } + } + + /// + /// Gets a state from a Dapr state store + /// + /// + /// + /// + /// + public async Task> GetStateAsync(string storeName, string key) { + try { + var state = await _client.GetStateAsync(storeName, key); + return Result.Ok(state); + } + catch (Exception ex) { + _logger.LogError(ex, _errorMessage); + return Result.InternalServerError(default, ex.Message); + } + } + + /// + /// Deletes a state from a Dapr state store + /// + /// + /// + /// + public async Task DeleteStateAsync(string storeName, string key) { + try { + await _client.DeleteStateAsync(storeName, key); + return Result.Ok(); + } + catch (Exception ex) { + _logger.LogError(ex, _errorMessage); + return Result.InternalServerError(ex.Message); + } + } } \ No newline at end of file diff --git a/src/MaksIT.Core.Dapr/MaksIT.Core.Dapr.csproj b/src/MaksIT.Core.Dapr/MaksIT.Core.Dapr.csproj index 9f7a5a7..3133595 100644 --- a/src/MaksIT.Core.Dapr/MaksIT.Core.Dapr.csproj +++ b/src/MaksIT.Core.Dapr/MaksIT.Core.Dapr.csproj @@ -7,7 +7,7 @@ MaksIT.Core.Dapr - 1.0.0 + 1.0.1 Maksym Sadovnychyy MAKS-IT MaksIT.Core.Dapr