User
deploy: update to latest release with Id case fix for notifications in seed_supabase.sql
22f4a07
Raw
History Blame Contribute Delete
16 kB
using System;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using TaskTrackingSystem.Shared.Enums;
namespace TaskTrackingSystem.Database.AppDbContextModels;
public partial class AppDbContext : DbContext
{
public AppDbContext()
{
}
public AppDbContext(DbContextOptions<AppDbContext> options)
: base(options)
{
}
public virtual DbSet<AuditLog> AuditLogs { get; set; }
public virtual DbSet<Comment> Comments { get; set; }
public virtual DbSet<Menu> Menus { get; set; }
public virtual DbSet<Notification> Notifications { get; set; }
public virtual DbSet<Permission> Permissions { get; set; }
public virtual DbSet<Issue> Issues { get; set; }
public virtual DbSet<Project> Projects { get; set; }
public virtual DbSet<ProjectMember> ProjectMembers { get; set; }
public virtual DbSet<Role> Roles { get; set; }
public virtual DbSet<RoleMenu> RoleMenus { get; set; }
public virtual DbSet<RolePermission> RolePermissions { get; set; }
public virtual DbSet<Task> Tasks { get; set; }
public virtual DbSet<UserDevice> UserDevices { get; set; }
public virtual DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseNpgsql("Host=localhost;Port=5432;Database=tts;Username=postgres;Password=postgres");
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<AuditLog>(entity =>
{
entity.HasIndex(e => e.UserId, "IX_AuditLogs_UserId");
entity.Property(e => e.Action).HasMaxLength(100);
entity.Property(e => e.CreatedAt)
.HasDefaultValueSql("CURRENT_TIMESTAMP")
.HasColumnType("timestamp with time zone");
entity.Property(e => e.IpAddress)
.HasMaxLength(45)
.IsUnicode(false);
entity.Property(e => e.Module).HasMaxLength(50);
entity.HasOne(d => d.User).WithMany(p => p.AuditLogs)
.HasForeignKey(d => d.UserId)
.HasConstraintName("FK_AuditLogs_Users");
});
modelBuilder.Entity<Comment>(entity =>
{
entity.HasIndex(e => e.TaskId, "IX_Comments_TaskId");
entity.HasIndex(e => e.UserId, "IX_Comments_UserId");
entity.Property(e => e.CreatedAt)
.HasDefaultValueSql("CURRENT_TIMESTAMP")
.HasColumnType("timestamp with time zone");
entity.Property(e => e.UpdatedAt).HasColumnType("timestamp with time zone");
entity.HasOne(d => d.Task).WithMany(p => p.Comments)
.HasForeignKey(d => d.TaskId)
.HasConstraintName("FK_Comments_Tasks");
entity.HasOne(d => d.User).WithMany(p => p.Comments)
.HasForeignKey(d => d.UserId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_Comments_Users");
});
modelBuilder.Entity<Menu>(entity =>
{
entity.HasIndex(e => e.MenuCode, "UQ_Menus_MenuCode").IsUnique();
entity.Property(e => e.CreatedAt)
.HasPrecision(0)
.HasDefaultValueSql("CURRENT_TIMESTAMP");
entity.Property(e => e.Icon).HasMaxLength(50);
entity.Property(e => e.MenuCode).HasMaxLength(50);
entity.Property(e => e.MenuName).HasMaxLength(100);
entity.Property(e => e.MenuUrl).HasMaxLength(200);
entity.Property(e => e.UpdatedAt).HasPrecision(0);
entity.Property(e => e.Visible).HasDefaultValue(true);
entity.HasOne(d => d.ParentMenu).WithMany(p => p.InverseParentMenu)
.HasForeignKey(d => d.ParentMenuId)
.HasConstraintName("FK_Menus_ParentMenu");
});
modelBuilder.Entity<Notification>(entity =>
{
entity.ToTable("notifications");
entity.HasIndex(e => e.CreatedAt, "IX_notifications_CreatedAt");
entity.HasIndex(e => new { e.RecipientId, e.IsRead }, "IX_notifications_Recipient_IsRead");
entity.Property(e => e.CreatedAt).HasColumnName("created_at").HasColumnType("timestamp with time zone");
entity.Property(e => e.IsRead).HasColumnName("is_read").HasDefaultValue(false);
entity.Property(e => e.NotificationType).HasColumnName("notification_type");
entity.Property(e => e.Title).HasMaxLength(255);
entity.Property(e => e.ReadAt).HasColumnName("read_at").HasColumnType("timestamp with time zone");
entity.Property(e => e.RecipientId).HasColumnName("recipient_id");
entity.Property(e => e.SenderId).HasColumnName("sender_id");
entity.Property(e => e.SourceId).HasColumnName("source_id");
entity.Property(e => e.SourceType).HasColumnName("source_type").HasMaxLength(20);
entity.HasOne(d => d.Recipient).WithMany()
.HasForeignKey(d => d.RecipientId)
.OnDelete(DeleteBehavior.Cascade)
.HasConstraintName("FK_notifications_Users_Recipient");
entity.HasOne(d => d.Sender).WithMany()
.HasForeignKey(d => d.SenderId)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("FK_notifications_Users_Sender");
});
modelBuilder.Entity<Permission>(entity =>
{
entity.HasIndex(e => e.MenuId, "IX_Permissions_MenuId");
entity.HasIndex(e => e.PermissionCode, "UQ_Permissions_PermissionCode").IsUnique();
entity.Property(e => e.ActionName).HasMaxLength(100);
entity.Property(e => e.ApiName).HasMaxLength(100);
entity.Property(e => e.CreatedAt)
.HasPrecision(0)
.HasDefaultValueSql("CURRENT_TIMESTAMP");
entity.Property(e => e.HttpMethod).HasMaxLength(20);
entity.Property(e => e.PermissionCode).HasMaxLength(50);
entity.Property(e => e.UpdatedAt).HasPrecision(0);
entity.Property(e => e.Visible).HasDefaultValue(true);
entity.HasOne(d => d.Menu).WithMany(p => p.Permissions)
.HasForeignKey(d => d.MenuId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_Permissions_Menu");
});
modelBuilder.Entity<Issue>(entity =>
{
entity.HasIndex(e => e.AssignedTo, "IX_Issues_AssignedTo");
entity.HasIndex(e => e.StatusId, "IX_Issues_StatusId");
entity.HasIndex(e => e.PriorityId, "IX_Issues_PriorityId");
entity.HasIndex(e => e.TaskId, "IX_Issues_TaskId");
entity.Property(e => e.ActualHours).HasColumnType("decimal(5, 2)");
entity.Property(e => e.CreatedAt)
.HasDefaultValueSql("CURRENT_TIMESTAMP")
.HasColumnType("timestamp with time zone");
entity.Property(e => e.Description).HasMaxLength(1000);
entity.Property(e => e.DelayReason).HasMaxLength(300);
entity.Property(e => e.BlockedBy).HasMaxLength(200);
entity.Property(e => e.DueDate).HasColumnType("timestamp with time zone");
entity.Property(e => e.EscalationLevel).HasDefaultValue(0);
entity.Property(e => e.IsBlocked).HasDefaultValue(false);
entity.Property(e => e.IsDeleted).HasDefaultValue(false);
entity.Property(e => e.PriorityId).HasDefaultValue(TaskPriority.Medium);
entity.Property(e => e.StartDate).HasColumnType("timestamp with time zone");
entity.Property(e => e.StatusId).HasDefaultValue(AppTaskStatus.Todo);
entity.Property(e => e.Title).HasMaxLength(200);
entity.Property(e => e.UpdatedAt).HasColumnType("timestamp with time zone");
entity.HasOne(d => d.AssignedToNavigation).WithMany()
.HasForeignKey(d => d.AssignedTo)
.HasConstraintName("FK_Issues_Users_AssignedTo");
entity.HasOne(d => d.Task).WithMany()
.HasForeignKey(d => d.TaskId)
.HasConstraintName("FK_Issues_Tasks");
});
modelBuilder.Entity<Project>(entity =>
{
entity.HasIndex(e => e.CreatedById, "IX_Projects_CreatedById");
entity.Property(e => e.CreatedAt)
.HasDefaultValueSql("CURRENT_TIMESTAMP")
.HasColumnType("timestamp with time zone");
entity.Property(e => e.CreatedDate)
.HasDefaultValueSql("CURRENT_TIMESTAMP")
.HasColumnType("timestamp with time zone");
entity.Property(e => e.EndDate).HasColumnType("timestamp with time zone");
entity.Property(e => e.Name).HasMaxLength(150);
entity.Property(e => e.StartDate).HasColumnType("timestamp with time zone");
entity.Property(e => e.UpdatedAt).HasColumnType("timestamp with time zone");
entity.HasOne(d => d.CreatedByNavigation).WithMany(p => p.Projects)
.HasForeignKey(d => d.CreatedById)
.OnDelete(DeleteBehavior.ClientSetNull);
});
modelBuilder.Entity<ProjectMember>(entity =>
{
entity.HasKey(e => new { e.ProjectId, e.UserId });
entity.HasIndex(e => e.UserId, "IX_ProjectMembers_UserId");
entity.Property(e => e.CreatedAt)
.HasDefaultValueSql("CURRENT_TIMESTAMP")
.HasColumnType("timestamp with time zone");
entity.HasOne(d => d.Project).WithMany(p => p.ProjectMembers)
.HasForeignKey(d => d.ProjectId)
.HasConstraintName("FK_ProjectMembers_Projects");
entity.HasOne(d => d.User).WithMany(p => p.ProjectMembers)
.HasForeignKey(d => d.UserId)
.HasConstraintName("FK_ProjectMembers_Users");
});
modelBuilder.Entity<Role>(entity =>
{
entity.HasIndex(e => e.Name, "UQ_Roles_Name").IsUnique();
entity.Property(e => e.CreatedAt)
.HasDefaultValueSql("CURRENT_TIMESTAMP")
.HasColumnType("timestamp with time zone");
entity.Property(e => e.Description).HasMaxLength(200);
entity.Property(e => e.Name).HasMaxLength(50);
entity.Property(e => e.UpdatedAt).HasColumnType("timestamp with time zone");
});
modelBuilder.Entity<RoleMenu>(entity =>
{
entity.HasKey(e => e.RoleMenuId).HasName("PK_RoleMenus_New");
entity.HasIndex(e => new { e.RoleId, e.MenuId }, "UQ_RoleMenus_Role_Menu").IsUnique();
entity.Property(e => e.CreatedAt)
.HasPrecision(0)
.HasDefaultValueSql("CURRENT_TIMESTAMP");
entity.Property(e => e.UpdatedAt).HasPrecision(0);
entity.HasOne(d => d.Menu).WithMany(p => p.RoleMenus)
.HasForeignKey(d => d.MenuId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_RoleMenus_Menus");
entity.HasOne(d => d.Role).WithMany(p => p.RoleMenus)
.HasForeignKey(d => d.RoleId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_RoleMenus_Roles");
});
modelBuilder.Entity<RolePermission>(entity =>
{
entity.HasIndex(e => e.PermissionId, "IX_RolePermissions_PermissionId");
entity.HasIndex(e => e.RoleId, "IX_RolePermissions_RoleId");
entity.HasIndex(e => new { e.RoleId, e.PermissionId }, "UQ_RolePermissions_Role_Permission").IsUnique();
entity.Property(e => e.CreatedAt)
.HasPrecision(0)
.HasDefaultValueSql("CURRENT_TIMESTAMP");
entity.Property(e => e.UpdatedAt).HasPrecision(0);
entity.HasOne(d => d.Permission).WithMany(p => p.RolePermissions)
.HasForeignKey(d => d.PermissionId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_RolePermissions_Permissions");
entity.HasOne(d => d.Role).WithMany(p => p.RolePermissions)
.HasForeignKey(d => d.RoleId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_RolePermissions_Roles");
});
modelBuilder.Entity<Task>(entity =>
{
entity.HasIndex(e => e.AssignedBy, "IX_Tasks_AssignedBy");
entity.HasIndex(e => e.AssignedTo, "IX_Tasks_AssignedTo");
entity.HasIndex(e => e.ProjectId, "IX_Tasks_ProjectId");
entity.Property(e => e.CreatedAt)
.HasDefaultValueSql("CURRENT_TIMESTAMP")
.HasColumnType("timestamp with time zone");
entity.Property(e => e.DueDate).HasColumnType("timestamp with time zone");
entity.Property(e => e.IsArchived).HasDefaultValue(false);
entity.Property(e => e.PriorityId).HasDefaultValue(TaskPriority.Medium);
entity.Property(e => e.StatusId).HasDefaultValue(AppTaskStatus.Todo);
entity.Property(e => e.Title).HasMaxLength(200);
entity.Property(e => e.UpdatedAt).HasColumnType("timestamp with time zone");
entity.HasOne(d => d.AssignedByNavigation).WithMany(p => p.TaskAssignedByNavigations).HasForeignKey(d => d.AssignedBy);
entity.HasOne(d => d.AssignedToNavigation).WithMany(p => p.TaskAssignedToNavigations).HasForeignKey(d => d.AssignedTo);
entity.HasOne(d => d.Project).WithMany(p => p.Tasks)
.HasForeignKey(d => d.ProjectId)
.HasConstraintName("FK_Tasks_Projects");
});
modelBuilder.Entity<User>(entity =>
{
entity.HasIndex(e => e.RoleId, "IX_Users_RoleId");
entity.HasIndex(e => e.Email, "UQ_Users_Email").IsUnique();
entity.HasIndex(e => e.Username, "UQ_Users_Username").IsUnique();
entity.Property(e => e.CreatedAt)
.HasDefaultValueSql("CURRENT_TIMESTAMP")
.HasColumnType("timestamp with time zone");
entity.Property(e => e.Email).HasMaxLength(256);
entity.Property(e => e.FirstName).HasMaxLength(50);
entity.Property(e => e.IsActive).HasDefaultValue(true);
entity.Property(e => e.LastName).HasMaxLength(50);
entity.Property(e => e.Phone).HasMaxLength(20);
entity.Property(e => e.UpdatedAt).HasColumnType("timestamp with time zone");
entity.Property(e => e.Username).HasMaxLength(50);
entity.HasOne(d => d.Role).WithMany(p => p.Users)
.HasForeignKey(d => d.RoleId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_Users_Roles");
});
modelBuilder.Entity<UserDevice>(entity =>
{
entity.ToTable("user_devices");
entity.HasIndex(e => e.UserId, "IX_user_devices_UserId");
entity.HasIndex(e => e.FcmToken, "UQ_user_devices_FcmToken").IsUnique();
entity.Property(e => e.UserId).HasColumnName("user_id");
entity.Property(e => e.FcmToken).HasColumnName("fcm_token").HasMaxLength(255);
entity.Property(e => e.CreatedAt).HasColumnName("created_at").HasColumnType("timestamp with time zone");
entity.Property(e => e.UpdatedAt).HasColumnName("updated_at").HasColumnType("timestamp with time zone");
entity.HasOne(d => d.User).WithMany()
.HasForeignKey(d => d.UserId)
.OnDelete(DeleteBehavior.Cascade)
.HasConstraintName("FK_user_devices_Users");
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}