using CredentialManager.Models; namespace DataConnection.CredentialManagement.Models; /// /// Extension methods per convertire le credenziali CredentialManager in oggetti DataConnection /// public static class CredentialExtensions { /// /// Converte il tipo di database da CredentialManager.Models.DatabaseType a DataConnection.Enums.DatabaseType /// public static DataConnection.Enums.DatabaseType ToDataConnectionDatabaseType(this CredentialManager.Models.DatabaseType credentialDbType) { return credentialDbType switch { CredentialManager.Models.DatabaseType.SqlServer => DataConnection.Enums.DatabaseType.SqlServer, CredentialManager.Models.DatabaseType.MySql => DataConnection.Enums.DatabaseType.MySql, CredentialManager.Models.DatabaseType.PostgreSql => DataConnection.Enums.DatabaseType.PostgreSql, CredentialManager.Models.DatabaseType.Oracle => DataConnection.Enums.DatabaseType.Oracle, CredentialManager.Models.DatabaseType.Sqlite => DataConnection.Enums.DatabaseType.Sqlite, CredentialManager.Models.DatabaseType.DB2 => DataConnection.Enums.DatabaseType.DB2, CredentialManager.Models.DatabaseType.SapHana => DataConnection.Enums.DatabaseType.SapHana, CredentialManager.Models.DatabaseType.Odbc => DataConnection.Enums.DatabaseType.Odbc, CredentialManager.Models.DatabaseType.OleDb => DataConnection.Enums.DatabaseType.OleDb, CredentialManager.Models.DatabaseType.Foxpro => DataConnection.Enums.DatabaseType.Foxpro, _ => throw new NotSupportedException($"Database type {credentialDbType} not supported") }; } /// /// Converte il tipo di database da DataConnection.Enums.DatabaseType a CredentialManager.Models.DatabaseType /// public static CredentialManager.Models.DatabaseType ToCredentialDatabaseType(this DataConnection.Enums.DatabaseType dataConnectionDbType) { return dataConnectionDbType switch { DataConnection.Enums.DatabaseType.SqlServer => CredentialManager.Models.DatabaseType.SqlServer, DataConnection.Enums.DatabaseType.MySql => CredentialManager.Models.DatabaseType.MySql, DataConnection.Enums.DatabaseType.PostgreSql => CredentialManager.Models.DatabaseType.PostgreSql, DataConnection.Enums.DatabaseType.Oracle => CredentialManager.Models.DatabaseType.Oracle, DataConnection.Enums.DatabaseType.Sqlite => CredentialManager.Models.DatabaseType.Sqlite, DataConnection.Enums.DatabaseType.DB2 => CredentialManager.Models.DatabaseType.DB2, DataConnection.Enums.DatabaseType.SapHana => CredentialManager.Models.DatabaseType.SapHana, DataConnection.Enums.DatabaseType.Odbc => CredentialManager.Models.DatabaseType.Odbc, DataConnection.Enums.DatabaseType.OleDb => CredentialManager.Models.DatabaseType.OleDb, DataConnection.Enums.DatabaseType.Foxpro => CredentialManager.Models.DatabaseType.Foxpro, _ => throw new NotSupportedException($"Database type {dataConnectionDbType} not supported") }; } /// /// Crea una DatabaseCredential da parametri di connessione /// public static DatabaseCredential CreateDatabaseCredential( string name, DataConnection.Enums.DatabaseType databaseType, string host, int port, string databaseName, string username, string password, int commandTimeout = 30, bool ignoreSslErrors = false) { return new DatabaseCredential { Name = name, DatabaseType = databaseType.ToCredentialDatabaseType(), Host = host, Port = port, DatabaseName = databaseName, Username = username, Password = password, CommandTimeout = commandTimeout, IgnoreSslErrors = ignoreSslErrors }; } /// /// Crea una RestApiCredential da parametri di connessione /// public static RestApiCredential CreateRestApiCredential( string name, string baseUrl, string? apiKey = null, string? username = null, string? password = null, string? authToken = null, int timeoutSeconds = 100, bool ignoreSslErrors = false, Dictionary? headers = null) { return new RestApiCredential { Name = name, BaseUrl = baseUrl, ApiKey = apiKey, Username = username, Password = password, AuthToken = authToken, TimeoutSeconds = timeoutSeconds, IgnoreSslErrors = ignoreSslErrors, Headers = headers }; } }