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}") }; } }