using System;
using DataConnection.EF.SchemaProviders;
using DataConnection.Enums;
using DataConnection.Interfaces;
namespace DataConnection.EF;
///
/// Factory per la creazione di provider di schema del database
///
public class DatabaseSchemaProviderFactory
{
///
/// Crea un provider di schema in base al tipo di database
///
/// Tipo di database
/// Provider di schema appropriato
public static IDatabaseSchemaProvider CreateProvider(DatabaseType databaseType)
{
return databaseType switch
{
DatabaseType.SqlServer => new SqlServerSchemaProvider(), DatabaseType.Odbc => new OdbcSchemaProvider(), // Aggiungere qui altri provider quando implementati
// DatabaseType.MySql => new MySqlSchemaProvider(),
// DatabaseType.PostgreSql => new PostgreSqlSchemaProvider(),
// DatabaseType.Oracle => new OracleSchemaProvider(),
// DatabaseType.Sqlite => new SqliteSchemaProvider(),
// DatabaseType.DB2 => new DB2SchemaProvider(),
// DatabaseType.SapHana => new SapHanaSchemaProvider(),
_ => throw new NotSupportedException($"Tipo di database non supportato per l'estrazione dello schema: {databaseType}")
};
}
}