@page "/database-connection" @using DataConnection.Enums @using DataConnection.Interfaces @inject Data.DatabaseConnectionService DatabaseService @inject IJSRuntime JSRuntime Connessione al Database

Connessione al Database

Configurazione connessione
@if (DatabaseService.ErrorMessage != null) {
@DatabaseService.ErrorMessage
}
@if (DatabaseService.IsConnected) {
Database Disponibili
@if (!string.IsNullOrEmpty(DatabaseService.SelectedDatabase) && databaseInfo != null) {
Dettagli Database
Nome @databaseInfo?.Name
Dimensione @databaseInfo?.SizeMB MB
Data Creazione @databaseInfo?.CreationDate.ToString("dd/MM/yyyy HH:mm")
Stato @databaseInfo?.Status
Proprietario @databaseInfo?.Owner
}
}
@if (showSchemaInfo) {
Schema del Database: @DatabaseService.SelectedDatabase
@if (schemaInfo != null && schemaInfo.Count > 0) {
@foreach (var table in schemaInfo) { }
Tabella Colonne
@table.Key
    @foreach (var column in table.Value) {
  • @column.Name (@column.DataType) @if (column.IsPrimaryKey) { PK } @if (column.IsForeignKey) { FK → @column.ReferencedTable }
  • }
} else {
Nessuna informazione sullo schema disponibile.
}
} @code { private bool isLoading = false; private bool isConnecting = false; private bool showSchemaInfo = false; private DatabaseInfo databaseInfo; private IDictionary> schemaInfo; protected override async Task OnInitializedAsync() { // Puoi impostare valori predefiniti, magari da configurazione DatabaseService.ConnectionString = "Server=localhost;User Id=sa;Password=password;TrustServerCertificate=True"; } private async Task TestConnection() { try { isLoading = true; showSchemaInfo = false; databaseInfo = null; await DatabaseService.TestConnectionAsync(); if (DatabaseService.IsConnected) { await DatabaseService.GetDatabasesInfoAsync(); } } catch (Exception ex) { await JSRuntime.InvokeVoidAsync("console.error", "Errore connessione:", ex.Message); } finally { isLoading = false; } } private async Task ConnectToDatabase() { if (string.IsNullOrEmpty(DatabaseService.SelectedDatabase)) return; try { isConnecting = true; showSchemaInfo = false; // Ottieni informazioni sul database selezionato if (DatabaseService.DatabasesInfo.TryGetValue(DatabaseService.SelectedDatabase, out var dbInfo)) { databaseInfo = dbInfo; } // Qui dovresti implementare la connessione al database selezionato // e recuperare le informazioni sullo schema // Per questo esempio, simuliamo che sia avvenuto con successo await Task.Delay(1000); // Simulazione operazione asincrona showSchemaInfo = true; // In un'implementazione reale, qui dovresti eseguire: // schemaInfo = await databaseManager.GetDatabaseSchemaAsync(); // Per ora creiamo dati di esempio schemaInfo = CreateSampleSchemaInfo(); } catch (Exception ex) { await JSRuntime.InvokeVoidAsync("console.error", "Errore connessione database:", ex.Message); //DatabaseService.ErrorMessage = $"Errore nella connessione al database: {ex.Message}"; showSchemaInfo = false; } finally { isConnecting = false; } } // Metodo temporaneo per generare dati di esempio - da sostituire con dati reali private IDictionary> CreateSampleSchemaInfo() { var result = new Dictionary>(); // Tabella Customers var customerColumns = new List { new DbColumnInfo { Name = "Id", DataType = "int", IsPrimaryKey = true }, new DbColumnInfo { Name = "Name", DataType = "nvarchar(100)" }, new DbColumnInfo { Name = "Email", DataType = "nvarchar(255)" }, new DbColumnInfo { Name = "Created", DataType = "datetime" } }; // Tabella Orders var orderColumns = new List { new DbColumnInfo { Name = "Id", DataType = "int", IsPrimaryKey = true }, new DbColumnInfo { Name = "CustomerId", DataType = "int", IsForeignKey = true, ReferencedTable = "Customers", ReferencedColumn = "Id" }, new DbColumnInfo { Name = "OrderDate", DataType = "datetime" }, new DbColumnInfo { Name = "TotalAmount", DataType = "decimal(18,2)" } }; result.Add("Customers", customerColumns); result.Add("Orders", orderColumns); return result; } }