Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit ff053af

Browse files
committed
Convert to async/await
1 parent a56f2d5 commit ff053af

File tree

5 files changed

+195
-214
lines changed

5 files changed

+195
-214
lines changed

src/ServiceStack.OrmLite/Async/OrmLiteReadCommandExtensionsAsync.cs

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -213,10 +213,10 @@ internal static Task<T> ScalarAsync<T>(this IDataReader reader, IOrmLiteDialectP
213213
OrmLiteReadCommandExtensions.ToScalar<T>(dialectProvider, reader), token);
214214
}
215215

216-
public static Task<long> LongScalarAsync(this IDbCommand dbCmd, CancellationToken token)
216+
public static async Task<long> LongScalarAsync(this IDbCommand dbCmd, CancellationToken token)
217217
{
218-
return dbCmd.GetDialectProvider().ExecuteScalarAsync(dbCmd, token)
219-
.Then(OrmLiteReadCommandExtensions.ToLong);
218+
var ret = await dbCmd.GetDialectProvider().ExecuteScalarAsync(dbCmd, token);
219+
return OrmLiteReadCommandExtensions.ToLong(ret);
220220
}
221221

222222
internal static Task<List<T>> ColumnAsync<T>(this IDbCommand dbCmd, string sql, object anonType, CancellationToken token)
@@ -226,19 +226,17 @@ internal static Task<List<T>> ColumnAsync<T>(this IDbCommand dbCmd, string sql,
226226
return dbCmd.ColumnAsync<T>(dbCmd.GetDialectProvider().ToSelectStatement(typeof(T), sql), token);
227227
}
228228

229-
internal static Task<List<T>> ColumnAsync<T>(this IDataReader reader, IOrmLiteDialectProvider dialectProvider, CancellationToken token)
229+
internal static async Task<List<T>> ColumnAsync<T>(this IDataReader reader, IOrmLiteDialectProvider dialectProvider, CancellationToken token)
230230
{
231-
return dialectProvider.ReaderEach(reader, () =>
231+
var ret = await dialectProvider.ReaderEach(reader, () =>
232232
{
233233
var value = dialectProvider.FromDbValue(reader, 0, typeof(T));
234234
return value == DBNull.Value ? default(T) : value;
235-
}, token)
236-
.Then(x =>
237-
{
238-
var columnValues = new List<T>();
239-
x.Each(o => columnValues.Add((T)o));
240-
return columnValues;
241-
});
235+
}, token);
236+
237+
var columnValues = new List<T>();
238+
ret.Each(o => columnValues.Add((T)o));
239+
return columnValues;
242240
}
243241

244242
internal static Task<HashSet<T>> ColumnDistinctAsync<T>(this IDbCommand dbCmd, string sql, object anonType, CancellationToken token)
@@ -248,19 +246,17 @@ internal static Task<HashSet<T>> ColumnDistinctAsync<T>(this IDbCommand dbCmd, s
248246
return dbCmd.ColumnDistinctAsync<T>(sql, token);
249247
}
250248

251-
internal static Task<HashSet<T>> ColumnDistinctAsync<T>(this IDataReader reader, IOrmLiteDialectProvider dialectProvider, CancellationToken token)
249+
internal static async Task<HashSet<T>> ColumnDistinctAsync<T>(this IDataReader reader, IOrmLiteDialectProvider dialectProvider, CancellationToken token)
252250
{
253-
return dialectProvider.ReaderEach(reader, () =>
251+
var ret = await dialectProvider.ReaderEach(reader, () =>
254252
{
255253
var value = dialectProvider.FromDbValue(reader, 0, typeof(T));
256254
return value == DBNull.Value ? default(T) : value;
257-
}, token)
258-
.Then(x =>
259-
{
260-
var columValues = new HashSet<T>();
261-
x.Each(o => columValues.Add((T)o));
262-
return columValues;
263-
});
255+
}, token);
256+
257+
var columnValues = new HashSet<T>();
258+
ret.Each(o => columnValues.Add((T)o));
259+
return columnValues;
264260
}
265261

266262
internal static Task<Dictionary<K, List<V>>> LookupAsync<K, V>(this IDbCommand dbCmd, string sql, object anonType, CancellationToken token)
@@ -309,22 +305,23 @@ internal static Task<Dictionary<K, V>> DictionaryAsync<K, V>(this IDataReader re
309305
}, map, token);
310306
}
311307

312-
internal static Task<bool> ExistsAsync<T>(this IDbCommand dbCmd, object anonType, CancellationToken token)
308+
internal static async Task<bool> ExistsAsync<T>(this IDbCommand dbCmd, object anonType, CancellationToken token)
313309
{
314310
string sql = null;
315311
if (anonType != null) dbCmd.SetParameters(anonType.ToObjectDictionary(), excludeDefaults: true, sql:ref sql);
316312

317313
sql = dbCmd.GetFilterSql<T>();
318314

319-
return dbCmd.ScalarAsync(sql, token).Then(x => x != null);
315+
var ret = await dbCmd.ScalarAsync(sql, token);
316+
return ret != null;
320317
}
321318

322-
internal static Task<bool> ExistsAsync<T>(this IDbCommand dbCmd, string sql, object anonType, CancellationToken token)
319+
internal static async Task<bool> ExistsAsync<T>(this IDbCommand dbCmd, string sql, object anonType, CancellationToken token)
323320
{
324321
if (anonType != null) dbCmd.SetParameters(anonType.ToObjectDictionary(), (bool)false, sql:ref sql);
325322

326-
return dbCmd.ScalarAsync(dbCmd.GetDialectProvider().ToSelectStatement(typeof(T), sql), token)
327-
.Then(x => x != null);
323+
var ret = await dbCmd.ScalarAsync(dbCmd.GetDialectProvider().ToSelectStatement(typeof(T), sql), token);
324+
return ret != null;
328325
}
329326

330327
// procedures ...

src/ServiceStack.OrmLite/Async/OrmLiteResultsFilterExtensionsAsync.cs

Lines changed: 69 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -52,84 +52,94 @@ public static Task<List<T>> ConvertToListAsync<T>(this IDbCommand dbCmd)
5252
return dbCmd.ConvertToListAsync<T>(null, default(CancellationToken));
5353
}
5454

55-
public static Task<List<T>> ConvertToListAsync<T>(this IDbCommand dbCmd, string sql, CancellationToken token)
55+
public static async Task<List<T>> ConvertToListAsync<T>(this IDbCommand dbCmd, string sql, CancellationToken token)
5656
{
5757
if (sql != null)
5858
dbCmd.CommandText = sql;
5959

6060
if (OrmLiteConfig.ResultsFilter != null)
61-
return OrmLiteConfig.ResultsFilter.GetList<T>(dbCmd).InTask();
61+
return OrmLiteConfig.ResultsFilter.GetList<T>(dbCmd);
6262

6363
var dialectProvider = dbCmd.GetDialectProvider();
64-
return dbCmd.ExecReaderAsync(dbCmd.CommandText, token)
65-
.Then(reader =>
66-
OrmLiteUtils.IsScalar<T>()
67-
? reader.ColumnAsync<T>(dialectProvider, token)
68-
: reader.ConvertToListAsync<T>(dialectProvider, null, token)).Unwrap();
64+
using (var reader = await dbCmd.ExecReaderAsync(dbCmd.CommandText, token))
65+
{
66+
if (OrmLiteUtils.IsScalar<T>())
67+
return await reader.ColumnAsync<T>(dialectProvider, token);
68+
69+
return await reader.ConvertToListAsync<T>(dialectProvider, null, token);
70+
}
6971
}
7072

7173
public static Task<IList> ConvertToListAsync(this IDbCommand dbCmd, Type refType)
7274
{
7375
return dbCmd.ConvertToListAsync(refType, null, default(CancellationToken));
7476
}
7577

76-
public static Task<IList> ConvertToListAsync(this IDbCommand dbCmd, Type refType, string sql, CancellationToken token)
78+
public static async Task<IList> ConvertToListAsync(this IDbCommand dbCmd, Type refType, string sql, CancellationToken token)
7779
{
7880
if (sql != null)
7981
dbCmd.CommandText = sql;
8082

8183
if (OrmLiteConfig.ResultsFilter != null)
82-
return OrmLiteConfig.ResultsFilter.GetRefList(dbCmd, refType).InTask();
84+
return OrmLiteConfig.ResultsFilter.GetRefList(dbCmd, refType);
8385

8486
var dialectProvider = dbCmd.GetDialectProvider();
85-
return dbCmd.ExecReaderAsync(dbCmd.CommandText, token)
86-
.Then(reader => reader.ConvertToListAsync(dialectProvider, refType, token)).Unwrap();
87+
using (var reader = await dbCmd.ExecReaderAsync(dbCmd.CommandText, token))
88+
{
89+
return await reader.ConvertToListAsync(dialectProvider, refType, token);
90+
}
8791
}
8892

89-
internal static Task<List<T>> ExprConvertToListAsync<T>(this IDbCommand dbCmd, string sql, IEnumerable<IDbDataParameter> sqlParams, HashSet<string> onlyFields, CancellationToken token)
93+
internal static async Task<List<T>> ExprConvertToListAsync<T>(this IDbCommand dbCmd, string sql, IEnumerable<IDbDataParameter> sqlParams, HashSet<string> onlyFields, CancellationToken token)
9094
{
9195
if (sql != null)
9296
dbCmd.CommandText = sql;
9397

9498
dbCmd.SetParameters(sqlParams);
9599

96100
if (OrmLiteConfig.ResultsFilter != null)
97-
return OrmLiteConfig.ResultsFilter.GetList<T>(dbCmd).InTask();
101+
return OrmLiteConfig.ResultsFilter.GetList<T>(dbCmd);
98102

99103
var dialectProvider = dbCmd.GetDialectProvider();
100-
return dbCmd.ExecReaderAsync(dbCmd.CommandText, token)
101-
.Then(reader => reader.ConvertToListAsync<T>(dialectProvider, onlyFields, token)).Unwrap();
104+
using (var reader = await dbCmd.ExecReaderAsync(dbCmd.CommandText, token))
105+
{
106+
return await reader.ConvertToListAsync<T>(dialectProvider, onlyFields, token);
107+
}
102108
}
103109

104110
public static Task<T> ConvertToAsync<T>(this IDbCommand dbCmd)
105111
{
106112
return dbCmd.ConvertToAsync<T>(null, default(CancellationToken));
107113
}
108114

109-
public static Task<T> ConvertToAsync<T>(this IDbCommand dbCmd, string sql, CancellationToken token)
115+
public static async Task<T> ConvertToAsync<T>(this IDbCommand dbCmd, string sql, CancellationToken token)
110116
{
111117
if (sql != null)
112118
dbCmd.CommandText = sql;
113119

114120
if (OrmLiteConfig.ResultsFilter != null)
115-
return OrmLiteConfig.ResultsFilter.GetSingle<T>(dbCmd).InTask();
121+
return OrmLiteConfig.ResultsFilter.GetSingle<T>(dbCmd);
116122

117123
var dialectProvider = dbCmd.GetDialectProvider();
118-
return dbCmd.ExecReaderAsync(dbCmd.CommandText, token)
119-
.Then(reader => reader.ConvertToAsync<T>(dialectProvider, token)).Unwrap();
124+
using (var reader = await dbCmd.ExecReaderAsync(dbCmd.CommandText, token))
125+
{
126+
return await reader.ConvertToAsync<T>(dialectProvider, token);
127+
}
120128
}
121129

122-
internal static Task<object> ConvertToAsync(this IDbCommand dbCmd, Type refType, string sql, CancellationToken token)
130+
internal static async Task<object> ConvertToAsync(this IDbCommand dbCmd, Type refType, string sql, CancellationToken token)
123131
{
124132
if (sql != null)
125133
dbCmd.CommandText = sql;
126134

127135
if (OrmLiteConfig.ResultsFilter != null)
128-
return OrmLiteConfig.ResultsFilter.GetRefSingle(dbCmd, refType).InTask();
136+
return OrmLiteConfig.ResultsFilter.GetRefSingle(dbCmd, refType);
129137

130138
var dialectProvider = dbCmd.GetDialectProvider();
131-
return dbCmd.ExecReaderAsync(dbCmd.CommandText, token)
132-
.Then(reader => reader.ConvertToAsync(dialectProvider, refType, token)).Unwrap();
139+
using (var reader = await dbCmd.ExecReaderAsync(dbCmd.CommandText, token))
140+
{
141+
return await reader.ConvertToAsync(dialectProvider, refType, token);
142+
}
133143
}
134144

135145
public static Task<T> ScalarAsync<T>(this IDbCommand dbCmd)
@@ -142,17 +152,19 @@ public static Task<T> ScalarAsync<T>(this IDbCommand dbCmd, string sql, IEnumera
142152
return dbCmd.SetParameters(sqlParams).ScalarAsync<T>(sql, token);
143153
}
144154

145-
public static Task<T> ScalarAsync<T>(this IDbCommand dbCmd, string sql, CancellationToken token)
155+
public static async Task<T> ScalarAsync<T>(this IDbCommand dbCmd, string sql, CancellationToken token)
146156
{
147157
if (sql != null)
148158
dbCmd.CommandText = sql;
149159

150160
if (OrmLiteConfig.ResultsFilter != null)
151-
return OrmLiteConfig.ResultsFilter.GetScalar<T>(dbCmd).InTask();
161+
return OrmLiteConfig.ResultsFilter.GetScalar<T>(dbCmd);
152162

153163
var dialectProvider = dbCmd.GetDialectProvider();
154-
return dbCmd.ExecReaderAsync(dbCmd.CommandText, token)
155-
.Then(reader => reader.ScalarAsync<T>(dialectProvider, token)).Unwrap();
164+
using (var reader = await dbCmd.ExecReaderAsync(dbCmd.CommandText, token))
165+
{
166+
return await reader.ScalarAsync<T>(dialectProvider, token);
167+
}
156168
}
157169

158170
public static Task<object> ScalarAsync(this IDbCommand dbCmd)
@@ -197,91 +209,101 @@ public static Task<long> ExecLongScalarAsync(this IDbCommand dbCmd, string sql,
197209
return dbCmd.LongScalarAsync(token);
198210
}
199211

200-
internal static Task<T> ExprConvertToAsync<T>(this IDbCommand dbCmd, string sql, IEnumerable<IDbDataParameter> sqlParams, CancellationToken token)
212+
internal static async Task<T> ExprConvertToAsync<T>(this IDbCommand dbCmd, string sql, IEnumerable<IDbDataParameter> sqlParams, CancellationToken token)
201213
{
202214
if (sql != null)
203215
dbCmd.CommandText = sql;
204216

205217
dbCmd.SetParameters(sqlParams);
206218

207219
if (OrmLiteConfig.ResultsFilter != null)
208-
return OrmLiteConfig.ResultsFilter.GetSingle<T>(dbCmd).InTask();
220+
return OrmLiteConfig.ResultsFilter.GetSingle<T>(dbCmd);
209221

210222
var dialectProvider = dbCmd.GetDialectProvider();
211-
return dbCmd.ExecReaderAsync(dbCmd.CommandText, token)
212-
.Then(reader => reader.ConvertToAsync<T>(dialectProvider, token)).Unwrap();
223+
using (var reader = await dbCmd.ExecReaderAsync(dbCmd.CommandText, token))
224+
{
225+
return await reader.ConvertToAsync<T>(dialectProvider, token);
226+
}
213227
}
214228

215229
internal static Task<List<T>> ColumnAsync<T>(this IDbCommand dbCmd, string sql, IEnumerable<IDbDataParameter> sqlParams, CancellationToken token)
216230
{
217231
return dbCmd.SetParameters(sqlParams).ColumnAsync<T>(sql, token);
218232
}
219233

220-
internal static Task<List<T>> ColumnAsync<T>(this IDbCommand dbCmd, string sql, CancellationToken token)
234+
internal static async Task<List<T>> ColumnAsync<T>(this IDbCommand dbCmd, string sql, CancellationToken token)
221235
{
222236
if (sql != null)
223237
dbCmd.CommandText = sql;
224238

225239
if (OrmLiteConfig.ResultsFilter != null)
226-
return OrmLiteConfig.ResultsFilter.GetColumn<T>(dbCmd).InTask();
240+
return OrmLiteConfig.ResultsFilter.GetColumn<T>(dbCmd);
227241

228242
var dialectProvider = dbCmd.GetDialectProvider();
229-
return dbCmd.ExecReaderAsync(dbCmd.CommandText, token)
230-
.Then(reader => reader.ColumnAsync<T>(dialectProvider, token)).Unwrap();
243+
using (var reader = await dbCmd.ExecReaderAsync(dbCmd.CommandText, token))
244+
{
245+
return await reader.ColumnAsync<T>(dialectProvider, token);
246+
}
231247
}
232248

233249
internal static Task<HashSet<T>> ColumnDistinctAsync<T>(this IDbCommand dbCmd, string sql, IEnumerable<IDbDataParameter> sqlParams, CancellationToken token)
234250
{
235251
return dbCmd.SetParameters(sqlParams).ColumnDistinctAsync<T>(sql, token);
236252
}
237253

238-
internal static Task<HashSet<T>> ColumnDistinctAsync<T>(this IDbCommand dbCmd, string sql, CancellationToken token)
254+
internal static async Task<HashSet<T>> ColumnDistinctAsync<T>(this IDbCommand dbCmd, string sql, CancellationToken token)
239255
{
240256
if (sql != null)
241257
dbCmd.CommandText = sql;
242258

243259
if (OrmLiteConfig.ResultsFilter != null)
244-
return OrmLiteConfig.ResultsFilter.GetColumnDistinct<T>(dbCmd).InTask();
260+
return OrmLiteConfig.ResultsFilter.GetColumnDistinct<T>(dbCmd);
245261

246262
var dialectProvider = dbCmd.GetDialectProvider();
247-
return dbCmd.ExecReaderAsync(dbCmd.CommandText, token)
248-
.Then(reader => reader.ColumnDistinctAsync<T>(dialectProvider, token)).Unwrap();
263+
using (var reader = await dbCmd.ExecReaderAsync(dbCmd.CommandText, token))
264+
{
265+
return await reader.ColumnDistinctAsync<T>(dialectProvider, token);
266+
}
249267
}
250268

251269
internal static Task<Dictionary<K, V>> DictionaryAsync<K, V>(this IDbCommand dbCmd, string sql, IEnumerable<IDbDataParameter> sqlParams, CancellationToken token)
252270
{
253271
return dbCmd.SetParameters(sqlParams).DictionaryAsync<K, V>(sql, token);
254272
}
255273

256-
internal static Task<Dictionary<K, V>> DictionaryAsync<K, V>(this IDbCommand dbCmd, string sql, CancellationToken token)
274+
internal static async Task<Dictionary<K, V>> DictionaryAsync<K, V>(this IDbCommand dbCmd, string sql, CancellationToken token)
257275
{
258276
if (sql != null)
259277
dbCmd.CommandText = sql;
260278

261279
if (OrmLiteConfig.ResultsFilter != null)
262-
return OrmLiteConfig.ResultsFilter.GetDictionary<K, V>(dbCmd).InTask();
280+
return OrmLiteConfig.ResultsFilter.GetDictionary<K, V>(dbCmd);
263281

264282
var dialectProvider = dbCmd.GetDialectProvider();
265-
return dbCmd.ExecReaderAsync(dbCmd.CommandText, token)
266-
.Then(reader => reader.DictionaryAsync<K, V>(dialectProvider, token)).Unwrap();
283+
using (var reader = await dbCmd.ExecReaderAsync(dbCmd.CommandText, token))
284+
{
285+
return await reader.DictionaryAsync<K, V>(dialectProvider, token);
286+
}
267287
}
268288

269289
internal static Task<Dictionary<K, List<V>>> LookupAsync<K, V>(this IDbCommand dbCmd, string sql, IEnumerable<IDbDataParameter> sqlParams, CancellationToken token)
270290
{
271291
return dbCmd.SetParameters(sqlParams).LookupAsync<K, V>(sql, token);
272292
}
273293

274-
internal static Task<Dictionary<K, List<V>>> LookupAsync<K, V>(this IDbCommand dbCmd, string sql, CancellationToken token)
294+
internal static async Task<Dictionary<K, List<V>>> LookupAsync<K, V>(this IDbCommand dbCmd, string sql, CancellationToken token)
275295
{
276296
if (sql != null)
277297
dbCmd.CommandText = sql;
278298

279299
if (OrmLiteConfig.ResultsFilter != null)
280-
return OrmLiteConfig.ResultsFilter.GetLookup<K, V>(dbCmd).InTask();
300+
return OrmLiteConfig.ResultsFilter.GetLookup<K, V>(dbCmd);
281301

282302
var dialectProvider = dbCmd.GetDialectProvider();
283-
return dbCmd.ExecReaderAsync(dbCmd.CommandText, token)
284-
.Then(reader => reader.LookupAsync<K, V>(dialectProvider, token)).Unwrap();
303+
using (var reader = await dbCmd.ExecReaderAsync(dbCmd.CommandText, token))
304+
{
305+
return await reader.LookupAsync<K, V>(dialectProvider, token);
306+
}
285307
}
286308
}
287309
}

0 commit comments

Comments
 (0)