-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSQLQuery.cs
More file actions
27 lines (21 loc) · 866 Bytes
/
Copy pathSQLQuery.cs
File metadata and controls
27 lines (21 loc) · 866 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System.Data;
using DataFuse.Adapters.Abstraction;
namespace DataFuse.Adapters.SQL;
public abstract class SQLQuery<TQueryResult> : BaseQuery<TQueryResult>, ISQLQuery
where TQueryResult : IQueryResult
{
async Task<IQueryResult> ISQLQuery.Run(IDbConnection conn)
{
return await QueryDelegate!(conn);
}
private Func<IDbConnection, Task<TQueryResult>>? QueryDelegate;
public override bool IsContextResolved() => QueryDelegate is not null;
public override void ResolveQuery(IDataContext context, IQueryResult? parentQueryResult)
{
QueryDelegate = GetQuery(context, parentQueryResult);
}
/// <summary>
/// Get query delegate to return query result.
/// </summary>
protected abstract Func<IDbConnection, Task<TQueryResult>> GetQuery(IDataContext context, IQueryResult? parentQueryResult);
}