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