96 lines
2.6 KiB
C#
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);
|
|
}
|