(feature): dapr statestore handling
This commit is contained in:
parent
a6c9966d37
commit
c1204b67b2
@ -1,11 +1,15 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
using Dapr.Client;
|
||||
|
||||
using MaksIT.Results;
|
||||
|
||||
namespace MaksIT.Core.Dapr;
|
||||
public interface IDaprService {
|
||||
Task<Result> PublishEventAsync(string pubSubName, string topicName, string payload);
|
||||
Task<Result> SaveStateAsync<T>(string storeName, string key, T value);
|
||||
Task<Result<T?>> GetStateAsync<T>(string storeName, string key);
|
||||
Task<Result> DeleteStateAsync(string storeName, string key);
|
||||
}
|
||||
|
||||
public class DaprService : IDaprService {
|
||||
@ -22,6 +26,13 @@ public class DaprService : IDaprService {
|
||||
_client = client;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Publishes an event to a Dapr topic
|
||||
/// </summary>
|
||||
/// <param name="pubSubName"></param>
|
||||
/// <param name="topicName"></param>
|
||||
/// <param name="payload"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<Result> 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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Saves a state to a Dapr state store
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="storeName"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<Result> SaveStateAsync<T>(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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a state from a Dapr state store
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="storeName"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<Result<T?>> GetStateAsync<T>(string storeName, string key) {
|
||||
try {
|
||||
var state = await _client.GetStateAsync<T?>(storeName, key);
|
||||
return Result<T?>.Ok(state);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
_logger.LogError(ex, _errorMessage);
|
||||
return Result<T?>.InternalServerError(default, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Deletes a state from a Dapr state store
|
||||
/// </summary>
|
||||
/// <param name="storeName"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<Result> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -7,7 +7,7 @@
|
||||
|
||||
<!-- NuGet package metadata -->
|
||||
<PackageId>MaksIT.Core.Dapr</PackageId>
|
||||
<Version>1.0.0</Version>
|
||||
<Version>1.0.1</Version>
|
||||
<Authors>Maksym Sadovnychyy</Authors>
|
||||
<Company>MAKS-IT</Company>
|
||||
<Product>MaksIT.Core.Dapr</Product>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user