(feature): dapr statestore handling
This commit is contained in:
parent
a6c9966d37
commit
c1204b67b2
@ -1,11 +1,15 @@
|
|||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
using Dapr.Client;
|
using Dapr.Client;
|
||||||
|
|
||||||
using MaksIT.Results;
|
using MaksIT.Results;
|
||||||
|
|
||||||
namespace MaksIT.Core.Dapr;
|
namespace MaksIT.Core.Dapr;
|
||||||
public interface IDaprService {
|
public interface IDaprService {
|
||||||
Task<Result> PublishEventAsync(string pubSubName, string topicName, string payload);
|
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 {
|
public class DaprService : IDaprService {
|
||||||
@ -22,6 +26,13 @@ public class DaprService : IDaprService {
|
|||||||
_client = client;
|
_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) {
|
public async Task<Result> PublishEventAsync(string pubSubName, string topicName, string payload) {
|
||||||
try {
|
try {
|
||||||
await _client.PublishEventAsync(pubSubName, topicName, payload);
|
await _client.PublishEventAsync(pubSubName, topicName, payload);
|
||||||
@ -32,4 +43,58 @@ public class DaprService : IDaprService {
|
|||||||
return Result.InternalServerError(ex.Message);
|
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 -->
|
<!-- NuGet package metadata -->
|
||||||
<PackageId>MaksIT.Core.Dapr</PackageId>
|
<PackageId>MaksIT.Core.Dapr</PackageId>
|
||||||
<Version>1.0.0</Version>
|
<Version>1.0.1</Version>
|
||||||
<Authors>Maksym Sadovnychyy</Authors>
|
<Authors>Maksym Sadovnychyy</Authors>
|
||||||
<Company>MAKS-IT</Company>
|
<Company>MAKS-IT</Company>
|
||||||
<Product>MaksIT.Core.Dapr</Product>
|
<Product>MaksIT.Core.Dapr</Product>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user