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