using Fengling.AuthService.Models; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; namespace Fengling.AuthService.Data; public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext(DbContextOptions options) : base(options) { } public DbSet OAuthApplications { get; set; } public DbSet Tenants { get; set; } public DbSet AccessLogs { get; set; } public DbSet AuditLogs { get; set; } protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); builder.Entity(entity => { entity.Property(e => e.RealName).HasMaxLength(100); entity.Property(e => e.Phone).HasMaxLength(20); entity.HasIndex(e => e.TenantId); entity.HasIndex(e => e.Phone).IsUnique(); }); builder.Entity(entity => { entity.Property(e => e.Description).HasMaxLength(200); }); builder.Entity(entity => { entity.HasKey(e => e.Id); entity.HasIndex(e => e.ClientId).IsUnique(); entity.Property(e => e.ClientId).HasMaxLength(100); entity.Property(e => e.ClientSecret).HasMaxLength(200); entity.Property(e => e.DisplayName).HasMaxLength(100); entity.Property(e => e.ClientType).HasMaxLength(20); entity.Property(e => e.ConsentType).HasMaxLength(20); entity.Property(e => e.Status).HasMaxLength(20); entity.Property(e => e.Description).HasMaxLength(500); }); builder.Entity(entity => { entity.HasKey(e => e.Id); entity.HasIndex(e => e.TenantId).IsUnique(); entity.Property(e => e.TenantId).HasMaxLength(50); entity.Property(e => e.Name).HasMaxLength(100); entity.Property(e => e.ContactName).HasMaxLength(50); entity.Property(e => e.ContactEmail).HasMaxLength(100); entity.Property(e => e.ContactPhone).HasMaxLength(20); entity.Property(e => e.Status).HasMaxLength(20); entity.Property(e => e.Description).HasMaxLength(500); }); builder.Entity(entity => { entity.HasKey(e => e.Id); entity.HasIndex(e => e.CreatedAt); entity.HasIndex(e => e.UserName); entity.HasIndex(e => e.TenantId); entity.HasIndex(e => e.Action); entity.HasIndex(e => e.Status); entity.Property(e => e.UserName).HasMaxLength(50); entity.Property(e => e.TenantId).HasMaxLength(50); entity.Property(e => e.Action).HasMaxLength(20); entity.Property(e => e.Resource).HasMaxLength(200); entity.Property(e => e.Method).HasMaxLength(10); entity.Property(e => e.IpAddress).HasMaxLength(50); entity.Property(e => e.UserAgent).HasMaxLength(500); entity.Property(e => e.Status).HasMaxLength(20); }); builder.Entity(entity => { entity.HasKey(e => e.Id); entity.HasIndex(e => e.CreatedAt); entity.HasIndex(e => e.Operator); entity.HasIndex(e => e.TenantId); entity.HasIndex(e => e.Operation); entity.HasIndex(e => e.Action); entity.Property(e => e.Operator).HasMaxLength(50); entity.Property(e => e.TenantId).HasMaxLength(50); entity.Property(e => e.Operation).HasMaxLength(20); entity.Property(e => e.Action).HasMaxLength(20); entity.Property(e => e.TargetType).HasMaxLength(50); entity.Property(e => e.TargetName).HasMaxLength(100); entity.Property(e => e.IpAddress).HasMaxLength(50); entity.Property(e => e.Description).HasMaxLength(500); entity.Property(e => e.Status).HasMaxLength(20); }); } }