using System.Data;
namespace TakeoutSaaS.Shared.Abstractions.Data;
///
/// Dapper 查询/命令执行器抽象,封装连接获取与读写路由。
///
public interface IDapperExecutor
{
///
/// 使用指定数据源与读写角色执行异步查询,并返回结果。
///
/// 查询结果类型。
/// 逻辑数据源名称。
/// 连接角色(读/写)。
/// 查询委托,提供已打开的连接和取消标记。
/// 取消标记。
/// 查询结果。
Task QueryAsync(
string dataSourceName,
DatabaseConnectionRole role,
Func> query,
CancellationToken cancellationToken = default);
///
/// 使用指定数据源与读写角色执行异步命令。
///
/// 逻辑数据源名称。
/// 连接角色(读/写)。
/// 命令委托,提供已打开的连接和取消标记。
/// 取消标记。
/// 异步执行任务。
Task ExecuteAsync(
string dataSourceName,
DatabaseConnectionRole role,
Func command,
CancellationToken cancellationToken = default);
///
/// 获取指定数据源及角色的默认命令超时时间(秒)。
///
/// 逻辑数据源名称。
/// 连接角色,默认读取从库。
/// 命令超时时间(秒)。
int GetDefaultCommandTimeoutSeconds(
string dataSourceName,
DatabaseConnectionRole role = DatabaseConnectionRole.Read);
}