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,
_ => 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,
_ => 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
};
}
}