using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
namespace Dpz.Core.MongodbAccess;
public interface IRepositoryBase : IRepository
{
/// <summary>
/// 获取所有集合名称
/// </summary>
/// <returns></returns>
Task<List<string>> GetAllCollectionAsync();
/// <summary>
/// 获取集合数据
/// </summary>
/// <param name="collectionName"></param>
/// <param name="filter"></param>
/// <param name="options"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
IAsyncEnumerable<BsonDocument> SearchForAsync(
string collectionName,
FilterDefinition<BsonDocument>? filter = null,
FindOptions<BsonDocument>? options = null,
CancellationToken cancellationToken = default
);
/// <summary>
/// 给指定的集合插入数据
/// </summary>
/// <param name="collectionName"></param>
/// <param name="source"></param>
/// <returns></returns>
Task InsertAsync(string collectionName, ICollection<BsonDocument> source);
/// <summary>
/// 删除所有数据
/// </summary>
/// <param name="collectionName"></param>
/// <returns></returns>
Task DeleteAllAsync(string collectionName);
}