sozsoft-platform/api/modules/Sozsoft.SqlQueryManager/Sozsoft.SqlQueryManager.Domain/Services/ISqlExecutorService.cs
2026-03-02 21:31:49 +03:00

49 lines
1.5 KiB
C#

using System.Collections.Generic;
using System.Threading.Tasks;
namespace Sozsoft.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 T-SQL commands against configured data sources.
/// </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, DDL).</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>Validate SQL syntax (basic validation).</summary>
Task<(bool IsValid, string ErrorMessage)> ValidateSqlAsync(string sql);
}