49 lines
1.5 KiB
C#
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);
|
|
}
|