Rest/MongoFilter.cs
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Mongo.Rest;

public readonly struct MongoFilter
{
	public Dictionary<string, object> Filter { get; init; }

	[JsonConstructor]
	internal MongoFilter( object filter )
	{
		Filter = JsonSerializer.Deserialize<Dictionary<string, object>>( JsonSerializer.Serialize( filter ) )!;
		Filter.Remove("_id");
	}

	
	[JsonConstructor]
	internal MongoFilter( Dictionary<string, object> filter )
	{
		Filter = filter;
		Filter.Remove("_id");
	}

	[JsonConstructor]
	public MongoFilter( string filter )
	{
		Filter = JsonSerializer.Deserialize<Dictionary<string, object>>( filter )!;
		Filter.Remove("_id");
	}

	public static MongoFilter All => new("{}");

	public override string ToString() => JsonSerializer.Serialize( Filter );

	public static implicit operator MongoFilter( string filter ) => new(filter);

	public static implicit operator MongoFilter( Dictionary<string, object> filter ) =>
		new(JsonSerializer.Serialize( filter ));
}