feat: 实现字典管理后端
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
using TakeoutSaaS.Application.Dictionary.Models;
|
||||
|
||||
namespace TakeoutSaaS.Application.Dictionary.Abstractions;
|
||||
|
||||
/// <summary>
|
||||
/// CSV 字典导入解析器。
|
||||
/// </summary>
|
||||
public interface ICsvDictionaryParser
|
||||
{
|
||||
/// <summary>
|
||||
/// 解析 CSV 数据。
|
||||
/// </summary>
|
||||
/// <param name="stream">输入流。</param>
|
||||
/// <param name="cancellationToken">取消标记。</param>
|
||||
/// <returns>解析后的记录列表。</returns>
|
||||
Task<IReadOnlyList<DictionaryImportRow>> ParseAsync(Stream stream, CancellationToken cancellationToken = default);
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
using TakeoutSaaS.Domain.Dictionary.Enums;
|
||||
|
||||
namespace TakeoutSaaS.Application.Dictionary.Abstractions;
|
||||
|
||||
/// <summary>
|
||||
/// 字典两级缓存访问接口。
|
||||
/// </summary>
|
||||
public interface IDictionaryHybridCache
|
||||
{
|
||||
/// <summary>
|
||||
/// 读取缓存,不存在时通过工厂生成并回填。
|
||||
/// </summary>
|
||||
Task<T?> GetOrCreateAsync<T>(
|
||||
string key,
|
||||
TimeSpan ttl,
|
||||
Func<CancellationToken, Task<T?>> factory,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 按前缀失效缓存。
|
||||
/// </summary>
|
||||
Task InvalidateAsync(
|
||||
string prefix,
|
||||
CacheInvalidationOperation operation = CacheInvalidationOperation.Update,
|
||||
CancellationToken cancellationToken = default);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using TakeoutSaaS.Application.Dictionary.Models;
|
||||
|
||||
namespace TakeoutSaaS.Application.Dictionary.Abstractions;
|
||||
|
||||
/// <summary>
|
||||
/// JSON 字典导入解析器。
|
||||
/// </summary>
|
||||
public interface IJsonDictionaryParser
|
||||
{
|
||||
/// <summary>
|
||||
/// 解析 JSON 数据。
|
||||
/// </summary>
|
||||
/// <param name="stream">输入流。</param>
|
||||
/// <param name="cancellationToken">取消标记。</param>
|
||||
/// <returns>解析后的记录列表。</returns>
|
||||
Task<IReadOnlyList<DictionaryImportRow>> ParseAsync(Stream stream, CancellationToken cancellationToken = default);
|
||||
}
|
||||
Reference in New Issue
Block a user