using MongoDB.Bson; namespace FozFc.Api.Infrastructure.Mongo; /// /// Generic, schema-less document access over any collection. Returns raw BSON /// documents (with _id); callers normalize for output at the API boundary. /// public interface IDocumentRepository { Task> FindAsync(string collection, BsonDocument filter, BsonDocument? sort, int limit, CancellationToken ct = default); Task GetByIdAsync(string collection, string id, CancellationToken ct = default); Task FindOneByFieldAsync(string collection, string field, BsonValue value, CancellationToken ct = default); Task InsertAsync(string collection, BsonDocument document, CancellationToken ct = default); /// Create-or-merge by id. Sets createdAt on insert and, optionally, updatedAt. Task UpsertAsync(string collection, string id, BsonDocument body, bool setUpdatedAt, CancellationToken ct = default); /// Update an existing document. Returns false when no document matched. Task UpdateAsync(string collection, string id, BsonDocument body, CancellationToken ct = default); Task DeleteAsync(string collection, string id, CancellationToken ct = default); }