using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
namespace Erp.SqlQueryManager.Application.Contracts;
///
/// Unified service for SQL Object Explorer and CRUD operations
///
public interface ISqlObjectManagerAppService : IApplicationService
{
///
/// Get all SQL objects for Object Explorer (Queries, SPs, Views, Functions, Tables, Templates)
///
/// Data source code to filter objects
/// Combined response with all object types
Task GetAllObjectsAsync(string dataSourceCode);
// Query Operations
Task CreateQueryAsync(CreateSqlQueryDto input);
Task UpdateQueryAsync(Guid id, UpdateSqlQueryDto input);
Task DeleteQueryAsync(Guid id);
Task ExecuteQueryAsync(ExecuteSqlQueryDto input);
Task ExecuteSavedQueryAsync(Guid id);
// Stored Procedure Operations
Task UpdateStoredProcedureAsync(Guid id, UpdateSqlStoredProcedureDto input);
Task DeleteStoredProcedureAsync(Guid id);
Task DeployStoredProcedureAsync(DeployStoredProcedureDto input);
// View Operations
Task UpdateViewAsync(Guid id, UpdateSqlViewDto input);
Task DeleteViewAsync(Guid id);
Task DeployViewAsync(DeployViewDto input);
// Function Operations
Task UpdateFunctionAsync(Guid id, UpdateSqlFunctionDto input);
Task DeleteFunctionAsync(Guid id);
Task DeployFunctionAsync(DeployFunctionDto input);
// Database Metadata Operations
Task> GetTableColumnsAsync(string dataSourceCode, string schemaName, string tableName);
}