using System.Text; using System.Text.Json; using FozFc.Api.Infrastructure.Mongo; using MongoDB.Bson; namespace FozFc.Api.Api.Extensions; /// Helpers that turn BSON documents into JSON responses. public static class BsonResults { private const string ContentType = "application/json"; public static IResult Json(BsonDocument document, int status = 200) => Results.Text(BsonJson.ToJson(document), ContentType, Encoding.UTF8, status); /// Serializes a document after normalizing _id -> id. public static IResult Document(BsonDocument document, int status = 200) => Json(BsonJson.NormalizeForOutput(document), status); public static IResult DocumentArray(IEnumerable documents, int status = 200) { var normalized = documents.Select(BsonJson.NormalizeForOutput); return Results.Text(BsonJson.ToJsonArray(normalized), ContentType, Encoding.UTF8, status); } public static IResult Error(int status, string message) => Results.Text(JsonSerializer.Serialize(new { error = message }), ContentType, Encoding.UTF8, status); public static IResult Ok() => Json(new BsonDocument("ok", true)); }