using System.Collections.Generic; using System.Threading.Tasks; namespace Erp.SqlQueryManager.Domain.Services; /// /// Result of SQL query execution /// public class SqlExecutionResult { public bool Success { get; set; } public string Message { get; set; } public IEnumerable Data { get; set; } public int RowsAffected { get; set; } public long ExecutionTimeMs { get; set; } public Dictionary Metadata { get; set; } public SqlExecutionResult() { Metadata = new Dictionary(); } } /// /// Service for executing SQL commands /// public interface ISqlExecutorService { /// /// Execute a SELECT query and return results /// Task ExecuteQueryAsync( string sql, string dataSourceCode, Dictionary parameters = null); /// /// Execute a non-query command (INSERT, UPDATE, DELETE) /// Task ExecuteNonQueryAsync( string sql, string dataSourceCode, Dictionary parameters = null); /// /// Execute scalar query (returns single value) /// Task ExecuteScalarAsync( string sql, string dataSourceCode, Dictionary parameters = null); /// /// Deploy stored procedure to database /// Task DeployStoredProcedureAsync( string procedureBody, string dataSourceCode); /// /// Deploy view to database /// Task DeployViewAsync( string viewDefinition, string dataSourceCode); /// /// Deploy function to database /// Task DeployFunctionAsync( string functionBody, string dataSourceCode); /// /// Check if database object exists /// Task CheckObjectExistsAsync( string objectName, string objectType, string dataSourceCode, string schemaName = "dbo"); /// /// Drop database object /// Task DropObjectAsync( string objectName, string objectType, string dataSourceCode, string schemaName = "dbo"); /// /// Validate SQL syntax (basic validation) /// Task<(bool IsValid, string ErrorMessage)> ValidateSqlAsync(string sql); }