Files
Data-Coupler/CredentialManager/Models/DataCouplerProfile.cs
T
Alessio 7e450a358b feat: Aggiunto sistema completo di gestione profili per Data Coupler
- Creata nuova libreria Components con componenti Blazor riutilizzabili
  * ProfileSelector: dropdown per selezione profili salvati
  * ProfileSaver: componente per salvare configurazioni correnti come profili
  * ProfileManagement: modale per gestione profili salvati
  * ProfileQuickActions: bottoni azioni rapide per operazioni sui profili

- Esteso CredentialManager con entità e servizi per DataCouplerProfile
  * Aggiunto modello DataCouplerProfile con configurazioni mapping e metadati
  * Implementata migrazione Entity Framework per memorizzazione profili
  * Creato DataCouplerProfileService per operazioni CRUD
  * Aggiunto CredentialDbContextFactory per operazioni database design-time

- Migliorato componente principale DataCoupler con integrazione profili
  * Integrata funzionalità caricamento/salvataggio profili
  * Aggiunto selettore profili nella parte superiore dell'interfaccia
  * Mantenuta retrocompatibilità con funzionalità esistenti
  * Migliorata esperienza utente con gestione configurazioni salvate

- Aggiornata struttura progetto e dipendenze
  * Aggiunto progetto Components alla soluzione
  * Aggiornati riferimenti progetti e import
  * Rimosso progetto obsoleto TestDatabaseFix

Questo aggiornamento migliora significativamente il flusso di lavoro permettendo agli utenti di salvare, caricare e gestire configurazioni complete di accoppiamento dati come
2025-07-02 00:00:05 +02:00

74 lines
1.9 KiB
C#

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace CredentialManager.Models;
/// <summary>
/// Modello per salvare le configurazioni dei profili di Data Coupler
/// </summary>
public class DataCouplerProfile
{
[Key]
public int Id { get; set; }
[Required]
[MaxLength(100)]
public string Name { get; set; } = string.Empty;
[MaxLength(500)]
public string? Description { get; set; }
// Configurazione Fonte Dati
[Required]
[MaxLength(20)]
public string SourceType { get; set; } = string.Empty; // "database" o "file"
public int? SourceCredentialId { get; set; }
[MaxLength(200)]
public string? SourceSchema { get; set; }
[MaxLength(200)]
public string? SourceTable { get; set; }
[MaxLength(500)]
public string? SourceFilePath { get; set; }
// Configurazione Destinazione
[Required]
[MaxLength(20)]
public string DestinationType { get; set; } = string.Empty; // "database" o "rest"
public int? DestinationCredentialId { get; set; }
[MaxLength(200)]
public string? DestinationSchema { get; set; }
[MaxLength(200)]
public string? DestinationTable { get; set; }
[MaxLength(500)]
public string? DestinationEndpoint { get; set; }
// Mapping dei campi salvato come JSON
[MaxLength(4000)]
public string? FieldMappingJson { get; set; }
// Metadati
[MaxLength(100)]
public string? CreatedBy { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public DateTime? LastUsedAt { get; set; }
public bool IsActive { get; set; } = true;
// Relazioni opzionali con le credenziali
[ForeignKey(nameof(SourceCredentialId))]
public virtual CredentialEntity? SourceCredential { get; set; }
[ForeignKey(nameof(DestinationCredentialId))]
public virtual CredentialEntity? DestinationCredential { get; set; }
}