using System;
using System.Collections.Generic;
using System.Data;
using System.Threading.Tasks;
using TeamAAS.Database.Models;
namespace TeamAAS.Database.Interfaces
{
///
/// 数据库操作统一接口。
/// 所有数据库提供者(MySQL、SQLite、SQL Server 等)均需实现此接口。
///
public interface IDatabase : IDisposable
{
///
/// 数据库唯一标识
///
Guid Id { get; }
///
/// 数据库名称(显示用)
///
string Name { get; set; }
///
/// 数据库类型标识(如 "mysql"、"sqlite")
///
string ProviderType { get; }
///
/// 是否已连接
///
bool IsConnected { get; }
///
/// 当前连接字符串(敏感信息已脱敏)
///
string ConnectionString { get; }
///
/// 打开数据库连接
///
bool Open();
///
/// 异步打开数据库连接
///
Task OpenAsync();
///
/// 关闭数据库连接
///
void Close();
///
/// 异步关闭数据库连接
///
Task CloseAsync();
///
/// 测试连接是否可用
///
(bool Success, string Message) TestConnection();
///
/// 异步测试连接
///
Task<(bool Success, string Message)> TestConnectionAsync();
///
/// 执行非查询 SQL(INSERT/UPDATE/DELETE/CREATE 等)
///
/// SQL 语句
/// 参数字典(可选)
/// 受影响行数
int ExecuteNonQuery(string sql, IDictionary parameters = null);
///
/// 异步执行非查询 SQL
///
Task ExecuteNonQueryAsync(string sql, IDictionary parameters = null);
///
/// 执行查询,返回 DataTable
///
/// SQL 查询语句
/// 参数字典(可选)
/// 查询结果表
DataTable ExecuteQuery(string sql, IDictionary parameters = null);
///
/// 异步执行查询,返回 DataTable
///
Task ExecuteQueryAsync(string sql, IDictionary parameters = null);
///
/// 执行查询,返回首行首列的值
///
/// SQL 查询语句
/// 参数字典(可选)
/// 首行首列值,无结果时返回 null
object ExecuteScalar(string sql, IDictionary parameters = null);
///
/// 异步执行查询,返回首行首列的值
///
Task