using Microsoft.EntityFrameworkCore; using CredentialManager.Models; namespace CredentialManager.Data; /// /// DbContext per la gestione delle credenziali /// public class CredentialDbContext : DbContext { public DbSet Credentials { get; set; } public CredentialDbContext(DbContextOptions options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); // Configurazione della tabella Credentials modelBuilder.Entity(entity => { entity.ToTable("Credentials"); entity.HasKey(e => e.Id); entity.Property(e => e.Name) .IsRequired() .HasMaxLength(100); entity.Property(e => e.Type) .IsRequired() .HasMaxLength(50); entity.Property(e => e.DatabaseType) .HasMaxLength(50); entity.Property(e => e.ConnectionString) .HasMaxLength(500); entity.Property(e => e.Host) .HasMaxLength(200); entity.Property(e => e.DatabaseName) .HasMaxLength(100); entity.Property(e => e.Username) .HasMaxLength(100); entity.Property(e => e.EncryptedApiKey) .HasMaxLength(500); entity.Property(e => e.EncryptedAuthToken) .HasMaxLength(500); entity.Property(e => e.Headers) .HasMaxLength(2000); entity.Property(e => e.AdditionalParameters) .HasMaxLength(2000); entity.Property(e => e.CreatedBy) .HasMaxLength(100); // Valori di default entity.Property(e => e.CommandTimeout) .HasDefaultValue(30); entity.Property(e => e.TimeoutSeconds) .HasDefaultValue(100); entity.Property(e => e.IgnoreSslErrors) .HasDefaultValue(false); entity.Property(e => e.IsActive) .HasDefaultValue(true); // Indici entity.HasIndex(e => e.Name) .IsUnique(); entity.HasIndex(e => e.Type); entity.HasIndex(e => e.DatabaseType); entity.HasIndex(e => e.IsActive); }); } }