Task_Tracker_SUBD/TaskTrackerRestAPI/TaskTrackerDatabaseImplement/TasktrackerContext.cs

197 lines
8.6 KiB
C#

using System;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
namespace TaskTrackerDatabaseImplement;
public partial class TasktrackerContext : DbContext
{
public TasktrackerContext()
{
}
public TasktrackerContext(DbContextOptions<TasktrackerContext> options)
: base(options)
{
}
public virtual DbSet<Company> Companies { get; set; }
public virtual DbSet<Employee> Employees { get; set; }
public virtual DbSet<Project> Projects { get; set; }
public virtual DbSet<Task> Tasks { get; set; }
public virtual DbSet<TaskAssigment> TaskAssigments { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263.
=> optionsBuilder.UseNpgsql("Host=192.168.56.101;Port=5432;Database=tasktracker;Username=postgres;Password=******");
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>(entity =>
{
entity.HasKey(e => e.Id).HasName("company_pkey");
entity.ToTable("company", tb => tb.HasComment("Сущность \"Компания\""));
entity.Property(e => e.Id)
.HasComment("Идентификатор сущности \"Компания\"")
.UseIdentityAlwaysColumn()
.HasColumnName("id");
entity.Property(e => e.Login)
.HasColumnType("character varying")
.HasColumnName("login");
entity.Property(e => e.Name)
.HasMaxLength(50)
.HasDefaultValueSql("'Моя компания'::character varying")
.HasComment("Название компании")
.HasColumnName("name");
entity.Property(e => e.Password)
.HasColumnType("character varying")
.HasColumnName("password");
});
modelBuilder.Entity<Employee>(entity =>
{
entity.HasKey(e => e.Id).HasName("employee_pkey");
entity.ToTable("employee", tb => tb.HasComment("Сущность \"Сотрудник\""));
entity.Property(e => e.Id)
.HasComment("Идентификатор сущности \"Сотрудник\"")
.UseIdentityAlwaysColumn()
.HasColumnName("id");
entity.Property(e => e.CompanyId)
.HasComment("Ссылка на идентификатор компании в которой работает сотрудник")
.HasColumnName("company_id");
entity.Property(e => e.Email)
.HasMaxLength(50)
.HasDefaultValueSql("'email сотрудника'::character varying")
.HasComment("E-mail сотрудника")
.HasColumnName("email");
entity.Property(e => e.JobTitle)
.HasMaxLength(50)
.HasDefaultValueSql("'Должность'::character varying")
.HasComment("Должность сотрудника")
.HasColumnName("job_title");
entity.Property(e => e.Name)
.HasMaxLength(50)
.HasDefaultValueSql("'Сотрудник'::character varying")
.HasComment("ФИО сотрудника")
.HasColumnName("name");
entity.HasOne(d => d.Company).WithMany(p => p.Employees)
.HasForeignKey(d => d.CompanyId)
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("employee_company_id_fkey");
});
modelBuilder.Entity<Project>(entity =>
{
entity.HasKey(e => e.Id).HasName("project_pkey");
entity.ToTable("project", tb => tb.HasComment("Сущность \"Проект\""));
entity.Property(e => e.Id)
.HasComment("Идентификатор сущности \"Проект\"")
.UseIdentityAlwaysColumn()
.HasColumnName("id");
entity.Property(e => e.CompanyId)
.HasComment("Ссылка на компанию, делающая проект")
.HasColumnName("company_id");
entity.Property(e => e.Name)
.HasMaxLength(50)
.HasDefaultValueSql("'Проект'::character varying")
.HasComment("Название проекта")
.HasColumnName("name");
entity.Property(e => e.State)
.HasMaxLength(50)
.HasDefaultValueSql("'Создан'::character varying")
.HasComment("Статус проекта")
.HasColumnName("state");
entity.HasOne(d => d.Company).WithMany(p => p.Projects)
.HasForeignKey(d => d.CompanyId)
.HasConstraintName("project_company_id_fkey");
});
modelBuilder.Entity<Task>(entity =>
{
entity.HasKey(e => e.Id).HasName("task_pkey");
entity.ToTable("task", tb => tb.HasComment("Сущность \"Задача\""));
entity.Property(e => e.Id)
.HasComment("Идентификатор сущности \"Задача\"")
.UseIdentityAlwaysColumn()
.HasColumnName("id");
entity.Property(e => e.Deadline)
.HasDefaultValueSql("(CURRENT_DATE + '7 days'::interval)")
.HasComment("Дедлайн")
.HasColumnType("timestamp without time zone")
.HasColumnName("deadline");
entity.Property(e => e.EndDate)
.HasComment("Дата выполнения задачи")
.HasColumnType("timestamp without time zone")
.HasColumnName("end_date");
entity.Property(e => e.Name)
.HasMaxLength(50)
.HasDefaultValueSql("'Задача'::character varying")
.HasComment("Название задачи")
.HasColumnName("name");
entity.Property(e => e.ProjectId)
.HasComment("Ссылка на проект задачи")
.HasColumnName("project_id");
entity.Property(e => e.StartDate)
.HasDefaultValueSql("CURRENT_DATE")
.HasComment("Дата создания задачи")
.HasColumnType("timestamp without time zone")
.HasColumnName("start_date");
entity.Property(e => e.State)
.HasMaxLength(50)
.HasDefaultValueSql("'Задача созадна'::character varying")
.HasComment("Статус задачи")
.HasColumnName("state");
entity.HasOne(d => d.Project).WithMany(p => p.Tasks)
.HasForeignKey(d => d.ProjectId)
.HasConstraintName("task_project_id_fkey");
});
modelBuilder.Entity<TaskAssigment>(entity =>
{
entity.HasKey(e => new { e.EmployeeId, e.TaskId }).HasName("pk_employee_task");
entity.ToTable("task_assigment", tb => tb.HasComment("Сущность \"Назначение на задачу\""));
entity.Property(e => e.EmployeeId)
.HasComment("Ссылка на сотрудника")
.HasColumnName("employee_id");
entity.Property(e => e.TaskId)
.HasComment("Ссылка на задачу")
.HasColumnName("task_id");
entity.Property(e => e.Role)
.HasMaxLength(50)
.HasDefaultValueSql("'Роль'::character varying")
.HasComment("Роль в задаче")
.HasColumnName("role");
entity.HasOne(d => d.Employee).WithMany(p => p.TaskAssigments)
.HasForeignKey(d => d.EmployeeId).IsRequired()
.HasConstraintName("employee_task_employee_id_fkey");
entity.HasOne(d => d.Task).WithMany(p => p.TaskAssigments)
.HasForeignKey(d => d.TaskId).IsRequired()
.HasConstraintName("employee_task_task_id_fkey");
});
modelBuilder.HasSequence<int>("company_id_seq");
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}