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));
}