Skip to content

Commit db28ae0

Browse files
author
Andrew Sumido
committed
Added abstraction around GridReader
1 parent 08f3a17 commit db28ae0

File tree

4 files changed

+465
-12
lines changed

4 files changed

+465
-12
lines changed

src/DataAbstractions.Dapper/DataAccessor.Dapper.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -144,11 +144,11 @@ public Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, TFourth, T
144144
public Task<IEnumerable<TReturn>> QueryAsync<TReturn>(string sql, Type[] types, Func<object[], TReturn> map, object param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null) =>
145145
_connection.QueryAsync(sql, types, map, param, transaction, buffered, splitOn, commandTimeout, commandType);
146146

147-
public Task<SqlMapper.GridReader> QueryMultipleAsync(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
148-
_connection.QueryMultipleAsync(sql, param, transaction, commandTimeout, commandType);
147+
public async Task<IGridReader> QueryMultipleAsync(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
148+
new GridReaderAdapter( await _connection.QueryMultipleAsync(sql, param, transaction, commandTimeout, commandType));
149149

150-
public Task<SqlMapper.GridReader> QueryMultipleAsync(CommandDefinition command) =>
151-
_connection.QueryMultipleAsync(command);
150+
public async Task<IGridReader> QueryMultipleAsync(CommandDefinition command) =>
151+
new GridReaderAdapter(await _connection.QueryMultipleAsync(command));
152152

153153
public Task<IDataReader> ExecuteReaderAsync(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
154154
_connection.ExecuteReaderAsync(sql, param, transaction, commandTimeout, commandType);
@@ -258,11 +258,11 @@ public T QuerySingle<T>(CommandDefinition command) =>
258258
public T QuerySingleOrDefault<T>(CommandDefinition command) =>
259259
_connection.QuerySingleOrDefault<T>(command);
260260

261-
public SqlMapper.GridReader QueryMultiple(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
262-
_connection.QueryMultiple(sql, param, transaction, commandTimeout, commandType);
261+
public IGridReader QueryMultiple(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
262+
new GridReaderAdapter(_connection.QueryMultiple(sql, param, transaction, commandTimeout, commandType));
263263

264-
public SqlMapper.GridReader QueryMultiple(CommandDefinition command) =>
265-
_connection.QueryMultiple(command);
264+
public IGridReader QueryMultiple(CommandDefinition command) =>
265+
new GridReaderAdapter(_connection.QueryMultiple(command));
266266

267267
public IEnumerable<TReturn> Query<TFirst, TSecond, TReturn>(string sql, Func<TFirst, TSecond, TReturn> map, object param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null) =>
268268
_connection.Query(sql, map, param, transaction, buffered, splitOn, commandTimeout, commandType);
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Data;
4+
using System.Threading.Tasks;
5+
using Dapper;
6+
7+
namespace DataAbstractions.Dapper
8+
{
9+
public class GridReaderAdapter : IGridReader
10+
{
11+
private readonly SqlMapper.GridReader _gridReader;
12+
13+
public GridReaderAdapter(SqlMapper.GridReader gridReader)
14+
{
15+
_gridReader = gridReader;
16+
}
17+
18+
public IEnumerable<dynamic> Read(bool buffered = true) => _gridReader.Read(buffered);
19+
20+
public dynamic ReadFirst() => _gridReader.ReadFirst();
21+
22+
public dynamic ReadFirstOrDefault() => _gridReader.ReadFirstOrDefault();
23+
24+
public dynamic ReadSingle() => _gridReader.ReadSingle();
25+
26+
public dynamic ReadSingleOrDefault() => _gridReader.ReadSingleOrDefault();
27+
28+
public IEnumerable<T> Read<T>(bool buffered = true) => _gridReader.Read<T>(buffered);
29+
30+
public T ReadFirst<T>() => _gridReader.ReadFirst<T>();
31+
32+
public T ReadFirstOrDefault<T>() => _gridReader.ReadFirstOrDefault<T>();
33+
34+
public T ReadSingle<T>() => _gridReader.ReadSingle<T>();
35+
36+
public T ReadSingleOrDefault<T>() => _gridReader.ReadSingleOrDefault<T>();
37+
38+
public IEnumerable<object> Read(Type type, bool buffered = true) => _gridReader.Read(type, buffered);
39+
40+
public object ReadFirst(Type type) => _gridReader.ReadFirst(type);
41+
42+
public object ReadFirstOrDefault(Type type) => _gridReader.ReadFirstOrDefault(type);
43+
44+
public object ReadSingle(Type type) => _gridReader.ReadSingle(type);
45+
46+
public object ReadSingleOrDefault(Type type) => _gridReader.ReadSingleOrDefault(type);
47+
48+
public IEnumerable<TReturn> Read<TFirst, TSecond, TReturn>(Func<TFirst, TSecond, TReturn> func,
49+
string splitOn = "id", bool buffered = true) =>
50+
_gridReader.Read<TFirst, TSecond, TReturn>(func, splitOn, buffered);
51+
52+
public IEnumerable<TReturn> Read<TFirst, TSecond, TThird, TReturn>(Func<TFirst, TSecond, TThird, TReturn> func,
53+
string splitOn = "id", bool buffered = true) =>
54+
_gridReader.Read<TFirst, TSecond, TThird, TReturn>(func, splitOn, buffered);
55+
56+
57+
public IEnumerable<TReturn> Read<TFirst, TSecond, TThird, TFourth, TReturn>(
58+
Func<TFirst, TSecond, TThird, TFourth, TReturn> func, string splitOn = "id", bool buffered = true) =>
59+
_gridReader.Read<TFirst, TSecond, TThird, TFourth, TReturn>(func, splitOn, buffered);
60+
61+
public IEnumerable<TReturn> Read<TFirst, TSecond, TThird, TFourth, TFifth, TReturn>(
62+
Func<TFirst, TSecond, TThird, TFourth, TFifth, TReturn> func, string splitOn = "id",
63+
bool buffered = true) =>
64+
_gridReader.Read<TFirst, TSecond, TThird, TFourth, TFifth, TReturn>(func, splitOn, buffered);
65+
66+
public IEnumerable<TReturn> Read<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn>(
67+
Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn> func, string splitOn = "id",
68+
bool buffered = true) =>
69+
_gridReader.Read<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn>(func, splitOn, buffered);
70+
71+
public IEnumerable<TReturn> Read<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(
72+
Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn> func, string splitOn = "id",
73+
bool buffered = true) =>
74+
_gridReader.Read<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(func, splitOn,
75+
buffered);
76+
77+
public IEnumerable<TReturn> Read<TReturn>(Type[] types, Func<object[], TReturn> map, string splitOn = "id",
78+
bool buffered = true) => _gridReader.Read<TReturn>(types, map, splitOn, buffered);
79+
80+
public bool IsConsumed => _gridReader.IsConsumed;
81+
82+
public IDbCommand Command
83+
{
84+
get => _gridReader.Command;
85+
set => _gridReader.Command = value;
86+
}
87+
88+
public void Dispose()
89+
{
90+
_gridReader.Dispose();
91+
}
92+
93+
public async Task<IEnumerable<dynamic>> ReadAsync(bool buffered = true) => await _gridReader.ReadAsync(buffered);
94+
95+
public async Task<dynamic> ReadFirstAsync() => await _gridReader.ReadFirstAsync();
96+
97+
public async Task<dynamic> ReadFirstOrDefaultAsync() => await _gridReader.ReadFirstOrDefaultAsync();
98+
99+
public async Task<dynamic> ReadSingleAsync() => await _gridReader.ReadSingleAsync();
100+
101+
public async Task<dynamic> ReadSingleOrDefaultAsync() => await _gridReader.ReadSingleOrDefaultAsync();
102+
103+
public async Task<IEnumerable<object>> ReadAsync(Type type, bool buffered = true) =>
104+
await _gridReader.ReadAsync(type, buffered);
105+
106+
public async Task<object> ReadFirstAsync(Type type) => await _gridReader.ReadFirstAsync(type);
107+
108+
public async Task<object> ReadFirstOrDefaultAsync(Type type) => await _gridReader.ReadFirstOrDefaultAsync(type);
109+
110+
public async Task<object> ReadSingleAsync(Type type) => await _gridReader.ReadSingleAsync(type);
111+
112+
public async Task<object> ReadSingleOrDefaultAsync(Type type) =>
113+
await _gridReader.ReadSingleOrDefaultAsync(type);
114+
115+
public async Task<IEnumerable<T>> ReadAsync<T>(bool buffered = true) =>
116+
await _gridReader.ReadAsync<T>(buffered);
117+
118+
public async Task<T> ReadFirstAsync<T>() => await _gridReader.ReadFirstAsync<T>();
119+
120+
public async Task<T> ReadFirstOrDefaultAsync<T>() => await _gridReader.ReadFirstOrDefaultAsync<T>();
121+
122+
public async Task<T> ReadSingleAsync<T>() => await _gridReader.ReadSingleAsync<T>();
123+
124+
public async Task<T> ReadSingleOrDefaultAsync<T>() => await _gridReader.ReadSingleOrDefaultAsync<T>();
125+
126+
}
127+
}

src/DataAbstractions.Dapper/IDataAccessor.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ public interface IDataAccessor : IDbConnection
5656
Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(string sql, Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn> map, object param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null);
5757
Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(CommandDefinition command, Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn> map, string splitOn = "Id");
5858
Task<IEnumerable<TReturn>> QueryAsync<TReturn>(string sql, Type[] types, Func<object[], TReturn> map, object param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null);
59-
Task<SqlMapper.GridReader> QueryMultipleAsync(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null);
60-
Task<SqlMapper.GridReader> QueryMultipleAsync(CommandDefinition command);
59+
Task<IGridReader> QueryMultipleAsync(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null);
60+
Task<IGridReader> QueryMultipleAsync(CommandDefinition command);
6161
Task<IDataReader> ExecuteReaderAsync(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null);
6262
Task<IDataReader> ExecuteReaderAsync(CommandDefinition command);
6363
Task<IDataReader> ExecuteReaderAsync(CommandDefinition command, CommandBehavior commandBehavior);
@@ -94,8 +94,8 @@ public interface IDataAccessor : IDbConnection
9494
T QueryFirstOrDefault<T>(CommandDefinition command);
9595
T QuerySingle<T>(CommandDefinition command);
9696
T QuerySingleOrDefault<T>(CommandDefinition command);
97-
SqlMapper.GridReader QueryMultiple(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null);
98-
SqlMapper.GridReader QueryMultiple(CommandDefinition command);
97+
IGridReader QueryMultiple(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null);
98+
IGridReader QueryMultiple(CommandDefinition command);
9999
IEnumerable<TReturn> Query<TFirst, TSecond, TReturn>(string sql, Func<TFirst, TSecond, TReturn> map, object param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null);
100100
IEnumerable<TReturn> Query<TFirst, TSecond, TThird, TReturn>(string sql, Func<TFirst, TSecond, TThird, TReturn> map, object param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null);
101101
IEnumerable<TReturn> Query<TFirst, TSecond, TThird, TFourth, TReturn>(string sql, Func<TFirst, TSecond, TThird, TFourth, TReturn> map, object param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null);

0 commit comments

Comments
 (0)