Correzione selezione database/schema nell'interfaccia Data Coupler

- Implementato discovery intelligente database vs schemi per ogni DBMS
- Aggiornate query SQL per mostrare solo database effettivi (non ruoli/schemi di sistema)
- Aggiunta UI modal per selezione database con riconnessione automatica
- Aggiunta UI modal fallback per selezione schema quando necessario
- Migliorate query discovery per SQL Server, PostgreSQL, MySQL e Oracle
- Implementata logica di riconnessione automatica al database selezionato
- Aggiornati testi e descrizioni dell'interfaccia per maggiore chiarezza
- Gestione prioritaria: database disponibili  fallback su schemi se necessario

Fixes: Menu selezione mostrava ruoli invece dei database reali
This commit is contained in:
2025-07-02 00:22:09 +02:00
parent 7e450a358b
commit 99da631aea
2 changed files with 327 additions and 17 deletions
+69 -2
View File
@@ -1155,7 +1155,7 @@
<div class="modal-body">
<p class="text-muted">
<i class="fas fa-info-circle"></i>
Il server non ha un database predefinito. Seleziona il database su cui eseguire le operazioni:
Sono stati trovati più database nel server. Seleziona il database da utilizzare:
</p>
@if (availableDatabases != null && availableDatabases.Any())
@@ -1169,6 +1169,10 @@
<option value="@db">@db</option>
}
</select>
<small class="form-text text-muted">
<i class="fas fa-lightbulb"></i>
Il database determina quali tabelle e viste saranno disponibili per il mapping.
</small>
</div>
}
else
@@ -1185,7 +1189,70 @@
</button>
<button type="button" class="btn btn-primary" @onclick="OnDatabaseSelected"
disabled="@string.IsNullOrEmpty(selectedDatabase)">
<i class="fas fa-check"></i> Conferma
<i class="fas fa-check"></i> Connetti al Database
</button>
</div>
</div>
</div>
</div>
}
<!-- Modal per la selezione dello schema -->
@if (showSchemaSelectionModal)
{
<div class="modal fade show d-block" style="background-color: rgba(0,0,0,0.5);">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">
<i class="fas fa-sitemap"></i> Seleziona Schema
</h5>
</div>
<div class="modal-body">
<p class="text-muted">
<i class="fas fa-info-circle"></i>
Sono stati trovati più schemi nel database. Seleziona lo schema da utilizzare:
</p>
@if (isLoadingSchemas)
{
<div class="text-center">
<div class="spinner-border spinner-border-sm me-2"></div>
Caricamento schemi...
</div>
}
else if (availableSchemas != null && availableSchemas.Any())
{
<div class="mb-3">
<label for="schemaSelect" class="form-label">Schemi disponibili:</label>
<select id="schemaSelect" class="form-select" @bind="selectedSchema">
<option value="">-- Seleziona uno schema --</option>
@foreach (var schema in availableSchemas)
{
<option value="@schema">@schema</option>
}
</select>
<small class="form-text text-muted">
<i class="fas fa-lightbulb"></i>
Lo schema determina quali tabelle e viste saranno disponibili per il mapping.
</small>
</div>
}
else
{
<div class="alert alert-warning">
<i class="fas fa-exclamation-triangle"></i>
Nessuno schema trovato o errore nel caricamento.
</div>
}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" @onclick="CancelSchemaSelection">
<i class="fas fa-times"></i> Annulla
</button>
<button type="button" class="btn btn-primary" @onclick="OnSchemaSelected"
disabled="@string.IsNullOrEmpty(selectedSchema)">
<i class="fas fa-check"></i> Connetti con Schema
</button>
</div>
</div>