using System.Collections.Generic; using System.Data; using System.Data.Common; using Dapper; namespace PluralKit.Core { public static class ConnectionUtils { public static async IAsyncEnumerable QueryStreamAsync(this DbConnectionFactory connFactory, string sql, object param) { using var conn = await connFactory.Obtain(); await using var reader = (DbDataReader) await conn.ExecuteReaderAsync(sql, param); var parser = reader.GetRowParser(); while (reader.Read()) yield return parser(reader); } public static async IAsyncEnumerable QueryStreamAsync(this IDbConnection conn, string sql, object param) { await using var reader = (DbDataReader) await conn.ExecuteReaderAsync(sql, param); var parser = reader.GetRowParser(); while (reader.Read()) yield return parser(reader); } } }