From 97b63b1fd7e1993a875b9c56a9a113ffc69838fb Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Tue, 25 Apr 2023 16:20:32 -0500 Subject: [PATCH] Remove Unspeakable Type Workaround https://github.com/dotnet/aspnetcore/issues/47548 has now been fixed. Removing the workaround that was added for it. --- src/BenchmarksApps/TodosApi/DataExtensions.cs | 15 --------------- src/BenchmarksApps/TodosApi/TodoApi.cs | 9 +++------ 2 files changed, 3 insertions(+), 21 deletions(-) diff --git a/src/BenchmarksApps/TodosApi/DataExtensions.cs b/src/BenchmarksApps/TodosApi/DataExtensions.cs index bded32c80..f3595d0d1 100644 --- a/src/BenchmarksApps/TodosApi/DataExtensions.cs +++ b/src/BenchmarksApps/TodosApi/DataExtensions.cs @@ -144,21 +144,6 @@ public static Task QueryAsync(this NpgsqlCommand command, Canc public static Task QueryAsync(this NpgsqlCommand command, CommandBehavior commandBehavior, CancellationToken cancellationToken = default) => command.ExecuteReaderAsync(commandBehavior, cancellationToken); - public static Task> ToListAsync(this IAsyncEnumerable enumerable, CancellationToken cancellationToken) - => ToListAsync(enumerable, null, cancellationToken); - - public static async Task> ToListAsync(this IAsyncEnumerable enumerable, int? initialCapacity = null, CancellationToken cancellationToken = default) - { - var list = initialCapacity.HasValue ? new List(initialCapacity.Value) : new List(); - - await foreach (var item in enumerable.WithCancellation(cancellationToken)) - { - list.Add(item); - } - - return list; - } - public static NpgsqlParameterCollection AddTyped(this NpgsqlParameterCollection parameters, T? value) { parameters.Add(new NpgsqlParameter diff --git a/src/BenchmarksApps/TodosApi/TodoApi.cs b/src/BenchmarksApps/TodosApi/TodoApi.cs index 8d99d38cc..19ef87871 100644 --- a/src/BenchmarksApps/TodosApi/TodoApi.cs +++ b/src/BenchmarksApps/TodosApi/TodoApi.cs @@ -13,18 +13,16 @@ public static RouteGroupBuilder MapTodoApi(this IEndpointRouteBuilder routes) group.AddValidationFilter(); - // BUG: Having to call ToListAsync() on query results until JSON support for unspeakable types (https://github.com/dotnet/aspnetcore/issues/47548) is resolved - group.MapGet("/", (NpgsqlDataSource db, CancellationToken ct) => - db.QueryAsync("SELECT * FROM Todos", ct).ToListAsync(ct)) + db.QueryAsync("SELECT * FROM Todos", ct)) .WithName("GetAllTodos"); group.MapGet("/complete", (NpgsqlDataSource db, CancellationToken ct) => - db.QueryAsync("SELECT * FROM Todos WHERE IsComplete = true", ct).ToListAsync(ct)) + db.QueryAsync("SELECT * FROM Todos WHERE IsComplete = true", ct)) .WithName("GetCompleteTodos"); group.MapGet("/incomplete", (NpgsqlDataSource db, CancellationToken ct) => - db.QueryAsync("SELECT * FROM Todos WHERE IsComplete = false", ct).ToListAsync(ct)) + db.QueryAsync("SELECT * FROM Todos WHERE IsComplete = false", ct)) .WithName("GetIncompleteTodos"); group.MapGet("/{id:int}", async Task, NotFound>> (int id, NpgsqlDataSource db, CancellationToken ct) => @@ -104,7 +102,6 @@ await db.ExecuteAsync( } [JsonSerializable(typeof(Todo))] -[JsonSerializable(typeof(List))] [JsonSerializable(typeof(IAsyncEnumerable))] internal partial class TodoApiJsonSerializerContext : JsonSerializerContext {