using System.Collections.Generic; using System.Threading.Tasks; using MongoDB.Driver; namespace Server.Utils; public record IAsyncCusorAsyncEnumerator(IAsyncCursor Cursor) { private IEnumerator? enumerator = null; public T Current => enumerator!.Current; public async Task MoveNextAsync() { bool result; if (enumerator != null) { result = enumerator.MoveNext(); if (result) return true; } result = await Cursor.MoveNextAsync(); if (result) { enumerator = Cursor.Current.GetEnumerator(); return true; } return false; } } public static class IAsyncCursorExtensions { public static IAsyncCusorAsyncEnumerator GetAsyncEnumerator(this IAsyncCursor cursor) { return new(cursor); } }