using System;
using System.Threading;
using System.Threading.Tasks;
using Dpz.Core.Entity.Base;
using MongoDB.Driver;

namespace Dpz.Core.MongodbAccess;

/// <summary>
/// MongoDB 索引初始化服务。
/// </summary>
public interface IMongoIndexInitializer
{
    /// <summary>
    /// 确保实体对应集合索引与代码定义一致。
    /// </summary>
    Task EnsureAsync<T>(
        IMongoCollection<T> collection,
        CancellationToken cancellationToken = default
    )
        where T : IBaseEntity;

    /// <summary>
    /// 根据运行时实体类型确保索引与代码定义一致。
    /// </summary>
    Task EnsureForTypeAsync(
        Type entityType,
        string connectionString,
        CancellationToken cancellationToken = default
    );

    /// <summary>
    /// 重置初始化状态
    /// </summary>
    Task ResetAsync(CancellationToken cancellationToken = default);
}
评论加载中...