GCR deployment testing in progress - content type issue still remaining.
This commit is contained in:
+49
-1
@@ -9,9 +9,16 @@ using MongoDB.Bson.Serialization;
|
||||
using MongoDB.Bson.Serialization.Serializers;
|
||||
using MongoDB.Driver;
|
||||
|
||||
// ── Explicit serializer registrations — force AOT to preserve constructors ─
|
||||
BsonSerializer.RegisterSerializer(new ObjectIdSerializer());
|
||||
BsonSerializer.RegisterSerializer(new StringSerializer());
|
||||
BsonSerializer.RegisterSerializer(new DateTimeSerializer());
|
||||
BsonSerializer.RegisterSerializer(new BooleanSerializer());
|
||||
BsonSerializer.RegisterSerializer(new NullableSerializer<DateTime>(new DateTimeSerializer()));
|
||||
// ── Explicit BsonClassMap — no AutoMap() reflection, fully AOT-safe ───────
|
||||
BsonClassMap.RegisterClassMap<AppUser>(cm =>
|
||||
{
|
||||
cm.AutoMap();
|
||||
cm.MapIdProperty(u => u.Id).SetSerializer(new ObjectIdSerializer());
|
||||
cm.MapProperty(u => u.Email).SetElementName("email");
|
||||
cm.MapProperty(u => u.NormalizedEmail).SetElementName("normalizedEmail");
|
||||
@@ -95,6 +102,47 @@ app.Use(async (context, next) =>
|
||||
await next();
|
||||
});
|
||||
|
||||
app.MapHtmxApiDemoEndpoints();
|
||||
// Explicit MapGet/MapPost so RequestDelegateGenerator can intercept and emit
|
||||
// NativeAOT-safe endpoint code. Handlers return ValueTask<IResult> which the
|
||||
// generator knows how to handle: it emits `await result.ExecuteAsync(httpContext)`.
|
||||
app.MapGet("/", static (
|
||||
[AsParameters] Htmx.ApiDemo.Templates.GetIndexHandler.Command cmd,
|
||||
Htmx.ApiDemo.Templates.GetIndexHandler.Handler handler,
|
||||
CancellationToken token) => handler.HandleAsync(cmd, token));
|
||||
|
||||
app.MapGet("/greet/{username}/{count?}/{id?}", static (
|
||||
[AsParameters] Htmx.ApiDemo.Templates.GetGreetingHandler.Query query,
|
||||
Htmx.ApiDemo.Templates.GetGreetingHandler.Handler handler,
|
||||
CancellationToken token) => handler.HandleAsync(query, token));
|
||||
|
||||
app.MapGet("/login", static (
|
||||
[AsParameters] Htmx.ApiDemo.Templates.GetLoginHandler.Query query,
|
||||
Htmx.ApiDemo.Templates.GetLoginHandler.Handler handler,
|
||||
CancellationToken token) => handler.HandleAsync(query, token));
|
||||
|
||||
app.MapPost("/login", static (
|
||||
[AsParameters] Htmx.ApiDemo.Templates.PostLoginHandler.Command cmd,
|
||||
Htmx.ApiDemo.Templates.PostLoginHandler.Handler handler,
|
||||
CancellationToken token) => handler.HandleAsync(cmd, token));
|
||||
|
||||
app.MapGet("/register", static (
|
||||
[AsParameters] Htmx.ApiDemo.Templates.GetRegisterHandler.Query query,
|
||||
Htmx.ApiDemo.Templates.GetRegisterHandler.Handler handler,
|
||||
CancellationToken token) => handler.HandleAsync(query, token));
|
||||
|
||||
app.MapPost("/register", static (
|
||||
[AsParameters] Htmx.ApiDemo.Templates.PostRegisterHandler.Command cmd,
|
||||
Htmx.ApiDemo.Templates.PostRegisterHandler.Handler handler,
|
||||
CancellationToken token) => handler.HandleAsync(cmd, token));
|
||||
|
||||
app.MapPost("/logout", static (
|
||||
[AsParameters] Htmx.ApiDemo.Templates.PostLogoutHandler.Command cmd,
|
||||
Htmx.ApiDemo.Templates.PostLogoutHandler.Handler handler,
|
||||
CancellationToken token) => handler.HandleAsync(cmd, token));
|
||||
|
||||
app.MapGet("/ui-demo", static (
|
||||
[AsParameters] Htmx.ApiDemo.Templates.GetUiDemoHandler.Query query,
|
||||
Htmx.ApiDemo.Templates.GetUiDemoHandler.Handler handler,
|
||||
CancellationToken token) => handler.HandleAsync(query, token));
|
||||
|
||||
app.Run();
|
||||
Reference in New Issue
Block a user