18 lines
821 B
C#
18 lines
821 B
C#
namespace Knot.Contracts.Conversations.Application.Abstractions;
|
|
|
|
/// <summary>
|
|
/// Хранилище для обеспечения идемпотентности операций.
|
|
/// Если ключ уже существует — возвращает сохранённый результат без повторного выполнения.
|
|
/// </summary>
|
|
public interface IIdempotencyStore
|
|
{
|
|
/// <summary>
|
|
/// Возвращает сохранённый результат по ключу или выполняет factory, сохраняет и возвращает результат.
|
|
/// </summary>
|
|
Task<T> GetOrCreateAsync<T>(
|
|
string key,
|
|
Func<CancellationToken, Task<T>> factory,
|
|
TimeSpan? expiration = null,
|
|
CancellationToken cancellationToken = default);
|
|
}
|