erp-platform/api/modules/Erp.SqlQueryManager/Erp.SqlQueryManager.Domain/Services/ISqlExecutorService.cs
2025-12-05 11:56:53 +03:00

96 lines
2.6 KiB
C#

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