Files
Data-Coupler/DataConnection/DB/Interfaces/IDatabaseSchemaProvider.cs
Alessio Dal Santo 77efe986a0 feat: Corregge la logica di rilevamento database specificato nella connection string
- Modifica IsDatabaseSpecifiedInConnectionString per verificare prima il campo DatabaseName della credenziale
- Aggiunge logging dettagliato per debugging del processo di connessione database
- Corregge il flusso di connessione per evitare il modale quando il database è già specificato
- Migliora la gestione degli errori nel caricamento tabelle dal database specificato
- Rimuove codice non raggiungibile nella logica di connessione database

Il bug precedente mostrava sempre il modale di selezione database anche quando
il database era specificato nel campo DatabaseName della credenziale, ora la
verifica segue la logica corretta:
1. Controlla se DatabaseName è valorizzato nella credenziale
2. Solo se vuoto, verifica i parametri Database=/Initial Catalog= nella connection string
2025-07-02 15:32:11 +02:00

39 lines
1.7 KiB
C#

using System.Collections.Generic;
using System.Threading.Tasks;
namespace DataConnection.Interfaces;
/// <summary>
/// Interfaccia per provider di estrazione dello schema del database
/// </summary>
public interface IDatabaseSchemaProvider
{
/// <summary>
/// Estrae lo schema del database (tabelle e colonne)
/// </summary>
/// <param name="connectionString">Stringa di connessione al database</param>
/// <returns>Struttura gerarchica delle tabelle e delle loro colonne</returns>
Task<IDictionary<string, IEnumerable<DbColumnInfo>>> GetDatabaseSchemaAsync(string connectionString);
/// <summary>
/// Ottiene la lista dei database disponibili sul server
/// </summary>
/// <param name="connectionString">Stringa di connessione al server (senza specificare il database)</param>
/// <returns>Lista dei nomi dei database disponibili</returns>
Task<IEnumerable<string>> GetAvailableDatabasesAsync(string connectionString);
/// <summary>
/// Ottiene solo la lista dei nomi delle tabelle disponibili (senza dettagli delle colonne)
/// </summary>
/// <param name="connectionString">Stringa di connessione al database</param>
/// <returns>Lista dei nomi delle tabelle</returns>
Task<IEnumerable<string>> GetTableNamesAsync(string connectionString);
/// <summary>
/// Ottiene i dettagli delle colonne per una specifica tabella
/// </summary>
/// <param name="connectionString">Stringa di connessione al database</param>
/// <param name="tableName">Nome della tabella (con schema se necessario)</param>
/// <returns>Lista delle informazioni sulle colonne</returns>
Task<IEnumerable<DbColumnInfo>> GetTableSchemaAsync(string connectionString, string tableName);
}