2026-03-02 18:31:49 +00:00
|
|
|
|
using System.Collections.Generic;
|
2026-02-24 20:44:16 +00:00
|
|
|
|
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>
|
2026-03-02 18:31:49 +00:00
|
|
|
|
/// Service for executing T-SQL commands against configured data sources.
|
2026-02-24 20:44:16 +00:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public interface ISqlExecutorService
|
|
|
|
|
|
{
|
2026-03-02 18:31:49 +00:00
|
|
|
|
/// <summary>Execute a SELECT query and return results.</summary>
|
2026-02-24 20:44:16 +00:00
|
|
|
|
Task<SqlExecutionResult> ExecuteQueryAsync(
|
2026-03-02 18:31:49 +00:00
|
|
|
|
string sql,
|
|
|
|
|
|
string dataSourceCode,
|
2026-02-24 20:44:16 +00:00
|
|
|
|
Dictionary<string, object> parameters = null);
|
2026-03-02 18:31:49 +00:00
|
|
|
|
|
|
|
|
|
|
/// <summary>Execute a non-query command (INSERT, UPDATE, DELETE, DDL).</summary>
|
2026-02-24 20:44:16 +00:00
|
|
|
|
Task<SqlExecutionResult> ExecuteNonQueryAsync(
|
2026-03-02 18:31:49 +00:00
|
|
|
|
string sql,
|
|
|
|
|
|
string dataSourceCode,
|
2026-02-24 20:44:16 +00:00
|
|
|
|
Dictionary<string, object> parameters = null);
|
2026-03-02 18:31:49 +00:00
|
|
|
|
|
|
|
|
|
|
/// <summary>Execute scalar query (returns single value).</summary>
|
2026-02-24 20:44:16 +00:00
|
|
|
|
Task<SqlExecutionResult> ExecuteScalarAsync<T>(
|
2026-03-02 18:31:49 +00:00
|
|
|
|
string sql,
|
2026-02-24 20:44:16 +00:00
|
|
|
|
string dataSourceCode,
|
2026-03-02 18:31:49 +00:00
|
|
|
|
Dictionary<string, object> parameters = null);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>Validate SQL syntax (basic validation).</summary>
|
2026-02-24 20:44:16 +00:00
|
|
|
|
Task<(bool IsValid, string ErrorMessage)> ValidateSqlAsync(string sql);
|
|
|
|
|
|
}
|