197 lines
8.6 KiB
C#
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);
|
|
}
|