using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TeamAAS_VP.Interfaces
{
///
/// 数据库初始化接口。
/// 提供用于初始化数据库及检查数据库是否存在的抽象方法,适用于应用启动、迁移或初始化流程。
/// 实现者应负责确保初始化过程的幂等性与线程安全,并在发生严重错误时抛出适当异常以便上层处理。
///
public interface IDatabaseInitializer
{
///
/// 初始化数据库。
/// 在应用程序启动或需要创建/升级数据库结构时调用。实现应执行必要的创建、架构迁移、索引或种子数据填充等操作。
/// 实现应尽可能保证方法的幂等性(重复调用不会产生不一致状态),并对并发调用做好同步处理。
///
void InitializeDatabase();
///
/// 检查目标数据库是否存在并可访问。
/// 用于在执行初始化或迁移前判断数据库是否已存在。实现应尽量以低开销方式进行检查,并在遇到非致命问题时返回 false。
/// 在发生致命错误(例如配置严重错误或权限问题)时,可以抛出异常以便调用方处理。
///
///
/// 如果目标数据库存在且可访问,则返回 true;否则返回 false。
///
bool DatabaseExists();
}
}