6 changed files with 22 additions and 78 deletions
@ -1,56 +0,0 @@ |
|||
/* |
|||
* Licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
|
|||
* See https://github.com/openiddict/openiddict-core for more information concerning
|
|||
* the license and the contributors participating to this project. |
|||
*/ |
|||
|
|||
using System.Runtime.CompilerServices; |
|||
|
|||
namespace MongoDB.Driver; |
|||
|
|||
/// <summary>
|
|||
/// Exposes extensions simplifying the integration between OpenIddict and MongoDB.
|
|||
/// </summary>
|
|||
internal static class OpenIddictMongoDbHelpers |
|||
{ |
|||
/// <summary>
|
|||
/// Executes the query and returns the results as a streamed async enumeration.
|
|||
/// </summary>
|
|||
/// <typeparam name="T">The type of the returned entities.</typeparam>
|
|||
/// <param name="source">The query source.</param>
|
|||
/// <param name="cancellationToken">The <see cref="CancellationToken"/> that can be used to abort the operation.</param>
|
|||
/// <returns>The streamed async enumeration containing the results.</returns>
|
|||
internal static IAsyncEnumerable<T> ToAsyncEnumerable<T>(this IAsyncCursorSource<T> source, CancellationToken cancellationToken) |
|||
{ |
|||
ArgumentNullException.ThrowIfNull(source); |
|||
|
|||
return ExecuteAsync(source, cancellationToken); |
|||
|
|||
static async IAsyncEnumerable<T> ExecuteAsync(IAsyncCursorSource<T> source, [EnumeratorCancellation] CancellationToken cancellationToken) |
|||
{ |
|||
using var cursor = await source.ToCursorAsync(cancellationToken); |
|||
|
|||
while (await cursor.MoveNextAsync(cancellationToken)) |
|||
{ |
|||
foreach (var element in cursor.Current) |
|||
{ |
|||
yield return element; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// Executes the query and returns the results as a streamed async enumeration.
|
|||
/// </summary>
|
|||
/// <typeparam name="T">The type of the returned entities.</typeparam>
|
|||
/// <param name="source">The query source.</param>
|
|||
/// <param name="cancellationToken">The <see cref="CancellationToken"/> that can be used to abort the operation.</param>
|
|||
/// <returns>The streamed async enumeration containing the results.</returns>
|
|||
internal static IAsyncEnumerable<T> ToAsyncEnumerable<T>(this IQueryable<T> source, CancellationToken cancellationToken) |
|||
{ |
|||
ArgumentNullException.ThrowIfNull(source); |
|||
|
|||
return ((IAsyncCursorSource<T>) source).ToAsyncEnumerable(cancellationToken); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue