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);
}