using CredentialManager.Models;
namespace DataConnection.CredentialManagement.Interfaces;
///
/// Interfaccia per la gestione delle credenziali integrate con DataConnection
///
public interface IDataConnectionCredentialService
{
// Database credentials
Task GetDatabaseCredentialAsync(string name);
Task GetDatabaseCredentialAsync(int id);
Task> GetAllDatabaseCredentialsAsync();
Task SaveDatabaseCredentialAsync(DatabaseCredential credential);
Task DeleteDatabaseCredentialAsync(int id);
Task DeleteDatabaseCredentialAsync(string name);
// REST API credentials
Task GetRestApiCredentialAsync(string name);
Task GetRestApiCredentialAsync(int id);
Task> GetAllRestApiCredentialsAsync();
Task SaveRestApiCredentialAsync(RestApiCredential credential);
Task DeleteRestApiCredentialAsync(int id);
Task DeleteRestApiCredentialAsync(string name);
// SAP B1 Service Layer credentials
Task GetSapB1CredentialAsync(string name);
Task GetSapB1CredentialAsync(int id);
Task> GetAllSapB1CredentialsAsync();
Task SaveSapB1CredentialAsync(SapB1ServiceLayerCredential credential);
Task DeleteSapB1CredentialAsync(int id);
Task DeleteSapB1CredentialAsync(string name);
// Salesforce credentials
Task GetSalesforceCredentialAsync(string name);
Task GetSalesforceCredentialAsync(int id);
Task> GetAllSalesforceCredentialsAsync();
Task SaveSalesforceCredentialAsync(SalesforceCredential credential);
Task DeleteSalesforceCredentialAsync(int id);
Task DeleteSalesforceCredentialAsync(string name);
// DataConnection specific operations
Task GetConnectionStringAsync(string credentialName);
Task GetConnectionStringAsync(int credentialId);
Task GetDbManagerOptionsAsync(string credentialName);
Task GetDbManagerOptionsAsync(int credentialId);
Task GetRestServiceOptionsAsync(string credentialName);
Task GetRestServiceOptionsAsync(int credentialId);
// Connection testing
Task<(bool Success, string Message)> TestDatabaseConnectionAsync(string credentialName);
Task<(bool Success, string Message)> TestDatabaseConnectionAsync(DatabaseCredential credential);
Task<(bool Success, string Message)> TestRestApiConnectionAsync(string credentialName);
Task<(bool Success, string Message)> TestRestApiConnectionAsync(RestApiCredential credential);
Task<(bool Success, string Message)> TestSapB1ConnectionAsync(string credentialName);
Task<(bool Success, string Message)> TestSapB1ConnectionAsync(SapB1ServiceLayerCredential credential);
Task<(bool Success, string Message)> TestSalesforceConnectionAsync(string credentialName);
Task<(bool Success, string Message)> TestSalesforceConnectionAsync(SalesforceCredential credential);
// Record associations
Task SaveRecordAssociationAsync(RecordAssociation association);
Task FindRecordAssociationAsync(string sourceName, string sourceKey, string destinationEntity);
Task> GetRecordAssociationsBySourceAsync(string sourceName, string sourceType);
Task> GetRecordAssociationsByDestinationAsync(string destinationEntity, string restCredentialName);
Task> GetAllActiveRecordAssociationsAsync();
Task UpdateRecordAssociationAsync(RecordAssociation association);
Task DeactivateRecordAssociationAsync(int id);
Task DeleteRecordAssociationAsync(int id);
}