e176ccbab5
- DbConnectionFactory renamed to "Database", will now be the primary entry point for DB stuff - Created IPKConnection interface mostly containing async extensions to IDbConnection, use this going forward - Reworked the Connection/Command wrappers (that have performance/logging extensions) - Probably more stuff that I forgot???
28 lines
1017 B
C#
28 lines
1017 B
C#
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.Common;
|
|
|
|
using Dapper;
|
|
|
|
namespace PluralKit.Core {
|
|
public static class ConnectionUtils
|
|
{
|
|
public static async IAsyncEnumerable<T> QueryStreamAsync<T>(this Database connFactory, string sql, object param)
|
|
{
|
|
await using var conn = await connFactory.Obtain();
|
|
|
|
await using var reader = (DbDataReader) await conn.ExecuteReaderAsync(sql, param);
|
|
var parser = reader.GetRowParser<T>();
|
|
while (await reader.ReadAsync())
|
|
yield return parser(reader);
|
|
}
|
|
|
|
public static async IAsyncEnumerable<T> QueryStreamAsync<T>(this IPKConnection conn, string sql, object param)
|
|
{
|
|
await using var reader = (DbDataReader) await conn.ExecuteReaderAsync(sql, param);
|
|
var parser = reader.GetRowParser<T>();
|
|
while (await reader.ReadAsync())
|
|
yield return parser(reader);
|
|
}
|
|
}
|
|
} |