From e34037267c5c17852a9667e0fa841d01dd00e79f Mon Sep 17 00:00:00 2001 From: Mikhail Kuznetsov Date: Fri, 19 May 2023 15:15:52 +1000 Subject: [PATCH] init_db --- PARR.DAL/Context/DataContext.cs | 12 +- .../20230519051342_AllTbls.Designer.cs | 315 ++++++++++++++++++ PARR.DAL/Migrations/20230519051342_AllTbls.cs | 218 ++++++++++++ .../Migrations/DataContextModelSnapshot.cs | 286 ++++++++++++++++ PARR.DAL/Models/Host.cs | 22 ++ PARR.DAL/Models/Job.cs | 32 ++ PARR.DAL/Models/JobCategory.cs | 24 ++ PARR.DAL/Models/JobJournal.cs | 39 +++ PARR.DAL/Models/JobMode.cs | 23 ++ PARR.DAL/Models/JobStatus.cs | 24 ++ PARR.DAL/Models/JobType.cs | 23 ++ 11 files changed, 1013 insertions(+), 5 deletions(-) create mode 100644 PARR.DAL/Migrations/20230519051342_AllTbls.Designer.cs create mode 100644 PARR.DAL/Migrations/20230519051342_AllTbls.cs create mode 100644 PARR.DAL/Models/Host.cs create mode 100644 PARR.DAL/Models/Job.cs create mode 100644 PARR.DAL/Models/JobCategory.cs create mode 100644 PARR.DAL/Models/JobJournal.cs create mode 100644 PARR.DAL/Models/JobMode.cs create mode 100644 PARR.DAL/Models/JobStatus.cs create mode 100644 PARR.DAL/Models/JobType.cs diff --git a/PARR.DAL/Context/DataContext.cs b/PARR.DAL/Context/DataContext.cs index cfb62e4f..0e83b450 100644 --- a/PARR.DAL/Context/DataContext.cs +++ b/PARR.DAL/Context/DataContext.cs @@ -7,10 +7,12 @@ namespace PARR.DAL.Context { public DataContext(DbContextOptions options) : base(options) { } - - //public DbSet Tests { get; set; } - //public DbSet Places { get; set; } - //public DbSet AreaCategories { get; set; } - //public DbSet Areas { get; set; } + public DbSet JobTypes { get; set; } + public DbSet JobCategories { get; set; } + public DbSet JobModes { get; set; } + public DbSet JobStatuses { get; set; } + public DbSet Hosts { get; set; } + public DbSet Jobs { get; set; } + public DbSet JobJournals { get; set; } } } diff --git a/PARR.DAL/Migrations/20230519051342_AllTbls.Designer.cs b/PARR.DAL/Migrations/20230519051342_AllTbls.Designer.cs new file mode 100644 index 00000000..bc5e2ae5 --- /dev/null +++ b/PARR.DAL/Migrations/20230519051342_AllTbls.Designer.cs @@ -0,0 +1,315 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using PARR.DAL.Context; + +#nullable disable + +namespace PARR.DAL.Migrations +{ + [DbContext(typeof(DataContext))] + [Migration("20230519051342_AllTbls")] + partial class AllTbls + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.5") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("PARR.DAL.Models.Host", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("EK") + .HasColumnType("text"); + + b.Property("HostName") + .IsRequired() + .HasColumnType("text"); + + b.Property("IP") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Hosts"); + }); + + modelBuilder.Entity("PARR.DAL.Models.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("JobCategoryId") + .HasColumnType("uuid"); + + b.Property("JobModeId") + .HasColumnType("uuid"); + + b.Property("JobTypeId") + .HasColumnType("uuid"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("JobCategoryId"); + + b.HasIndex("JobModeId"); + + b.HasIndex("JobTypeId"); + + b.ToTable("Jobs"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("JobCategories"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobJournal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("DateOper") + .HasColumnType("text"); + + b.Property("HostId") + .HasColumnType("uuid"); + + b.Property("Info") + .HasColumnType("text"); + + b.Property("JobId") + .HasColumnType("uuid"); + + b.Property("JobStatusId") + .HasColumnType("uuid"); + + b.Property("Other") + .HasColumnType("text"); + + b.Property("TimeOut") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("HostId"); + + b.HasIndex("JobId"); + + b.HasIndex("JobStatusId"); + + b.ToTable("JobJournals"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobMode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("JobModes"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("JobStatuses"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("JobTypes"); + }); + + modelBuilder.Entity("PARR.DAL.Models.Job", b => + { + b.HasOne("PARR.DAL.Models.JobCategory", "JobCategorye") + .WithMany("Jobs") + .HasForeignKey("JobCategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PARR.DAL.Models.JobMode", "JobMode") + .WithMany("Jobs") + .HasForeignKey("JobModeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PARR.DAL.Models.JobType", "JobType") + .WithMany("Jobs") + .HasForeignKey("JobTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("JobCategorye"); + + b.Navigation("JobMode"); + + b.Navigation("JobType"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobJournal", b => + { + b.HasOne("PARR.DAL.Models.Host", "Host") + .WithMany("JobJournals") + .HasForeignKey("HostId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PARR.DAL.Models.Job", "Job") + .WithMany("Journals") + .HasForeignKey("JobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PARR.DAL.Models.JobStatus", "Status") + .WithMany("Journals") + .HasForeignKey("JobStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Host"); + + b.Navigation("Job"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("PARR.DAL.Models.Host", b => + { + b.Navigation("JobJournals"); + }); + + modelBuilder.Entity("PARR.DAL.Models.Job", b => + { + b.Navigation("Journals"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobCategory", b => + { + b.Navigation("Jobs"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobMode", b => + { + b.Navigation("Jobs"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobStatus", b => + { + b.Navigation("Journals"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobType", b => + { + b.Navigation("Jobs"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/PARR.DAL/Migrations/20230519051342_AllTbls.cs b/PARR.DAL/Migrations/20230519051342_AllTbls.cs new file mode 100644 index 00000000..61da2dfd --- /dev/null +++ b/PARR.DAL/Migrations/20230519051342_AllTbls.cs @@ -0,0 +1,218 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace PARR.DAL.Migrations +{ + /// + public partial class AllTbls : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Hosts", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + DateCreated = table.Column(type: "timestamp with time zone", nullable: false), + DateModified = table.Column(type: "timestamp with time zone", nullable: true), + HostName = table.Column(type: "text", nullable: false), + IP = table.Column(type: "text", nullable: false), + EK = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Hosts", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "JobCategories", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + DateCreated = table.Column(type: "timestamp with time zone", nullable: false), + DateModified = table.Column(type: "timestamp with time zone", nullable: true), + Name = table.Column(type: "text", nullable: false), + Description = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_JobCategories", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "JobModes", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + DateCreated = table.Column(type: "timestamp with time zone", nullable: false), + DateModified = table.Column(type: "timestamp with time zone", nullable: true), + Name = table.Column(type: "text", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_JobModes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "JobStatuses", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + DateCreated = table.Column(type: "timestamp with time zone", nullable: false), + DateModified = table.Column(type: "timestamp with time zone", nullable: true), + Name = table.Column(type: "text", nullable: false), + Description = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_JobStatuses", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "JobTypes", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + DateCreated = table.Column(type: "timestamp with time zone", nullable: false), + DateModified = table.Column(type: "timestamp with time zone", nullable: true), + Name = table.Column(type: "text", nullable: false), + Description = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_JobTypes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Jobs", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + DateCreated = table.Column(type: "timestamp with time zone", nullable: false), + DateModified = table.Column(type: "timestamp with time zone", nullable: true), + Name = table.Column(type: "text", nullable: false), + JobModeId = table.Column(type: "uuid", nullable: false), + JobCategoryId = table.Column(type: "uuid", nullable: false), + JobTypeId = table.Column(type: "uuid", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Jobs", x => x.Id); + table.ForeignKey( + name: "FK_Jobs_JobCategories_JobCategoryId", + column: x => x.JobCategoryId, + principalTable: "JobCategories", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Jobs_JobModes_JobModeId", + column: x => x.JobModeId, + principalTable: "JobModes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Jobs_JobTypes_JobTypeId", + column: x => x.JobTypeId, + principalTable: "JobTypes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "JobJournals", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + DateCreated = table.Column(type: "timestamp with time zone", nullable: false), + DateModified = table.Column(type: "timestamp with time zone", nullable: true), + DateOper = table.Column(type: "text", nullable: true), + Other = table.Column(type: "text", nullable: true), + TimeOut = table.Column(type: "integer", nullable: true), + Info = table.Column(type: "text", nullable: true), + JobStatusId = table.Column(type: "uuid", nullable: false), + HostId = table.Column(type: "uuid", nullable: false), + JobId = table.Column(type: "uuid", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_JobJournals", x => x.Id); + table.ForeignKey( + name: "FK_JobJournals_Hosts_HostId", + column: x => x.HostId, + principalTable: "Hosts", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_JobJournals_JobStatuses_JobStatusId", + column: x => x.JobStatusId, + principalTable: "JobStatuses", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_JobJournals_Jobs_JobId", + column: x => x.JobId, + principalTable: "Jobs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_JobJournals_HostId", + table: "JobJournals", + column: "HostId"); + + migrationBuilder.CreateIndex( + name: "IX_JobJournals_JobId", + table: "JobJournals", + column: "JobId"); + + migrationBuilder.CreateIndex( + name: "IX_JobJournals_JobStatusId", + table: "JobJournals", + column: "JobStatusId"); + + migrationBuilder.CreateIndex( + name: "IX_Jobs_JobCategoryId", + table: "Jobs", + column: "JobCategoryId"); + + migrationBuilder.CreateIndex( + name: "IX_Jobs_JobModeId", + table: "Jobs", + column: "JobModeId"); + + migrationBuilder.CreateIndex( + name: "IX_Jobs_JobTypeId", + table: "Jobs", + column: "JobTypeId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "JobJournals"); + + migrationBuilder.DropTable( + name: "Hosts"); + + migrationBuilder.DropTable( + name: "JobStatuses"); + + migrationBuilder.DropTable( + name: "Jobs"); + + migrationBuilder.DropTable( + name: "JobCategories"); + + migrationBuilder.DropTable( + name: "JobModes"); + + migrationBuilder.DropTable( + name: "JobTypes"); + } + } +} diff --git a/PARR.DAL/Migrations/DataContextModelSnapshot.cs b/PARR.DAL/Migrations/DataContextModelSnapshot.cs index 507e2996..6924f21c 100644 --- a/PARR.DAL/Migrations/DataContextModelSnapshot.cs +++ b/PARR.DAL/Migrations/DataContextModelSnapshot.cs @@ -1,4 +1,5 @@ // +using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; @@ -20,6 +21,291 @@ namespace PARR.DAL.Migrations .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("PARR.DAL.Models.Host", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("EK") + .HasColumnType("text"); + + b.Property("HostName") + .IsRequired() + .HasColumnType("text"); + + b.Property("IP") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Hosts"); + }); + + modelBuilder.Entity("PARR.DAL.Models.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("JobCategoryId") + .HasColumnType("uuid"); + + b.Property("JobModeId") + .HasColumnType("uuid"); + + b.Property("JobTypeId") + .HasColumnType("uuid"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("JobCategoryId"); + + b.HasIndex("JobModeId"); + + b.HasIndex("JobTypeId"); + + b.ToTable("Jobs"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("JobCategories"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobJournal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("DateOper") + .HasColumnType("text"); + + b.Property("HostId") + .HasColumnType("uuid"); + + b.Property("Info") + .HasColumnType("text"); + + b.Property("JobId") + .HasColumnType("uuid"); + + b.Property("JobStatusId") + .HasColumnType("uuid"); + + b.Property("Other") + .HasColumnType("text"); + + b.Property("TimeOut") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("HostId"); + + b.HasIndex("JobId"); + + b.HasIndex("JobStatusId"); + + b.ToTable("JobJournals"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobMode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("JobModes"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("JobStatuses"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("JobTypes"); + }); + + modelBuilder.Entity("PARR.DAL.Models.Job", b => + { + b.HasOne("PARR.DAL.Models.JobCategory", "JobCategorye") + .WithMany("Jobs") + .HasForeignKey("JobCategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PARR.DAL.Models.JobMode", "JobMode") + .WithMany("Jobs") + .HasForeignKey("JobModeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PARR.DAL.Models.JobType", "JobType") + .WithMany("Jobs") + .HasForeignKey("JobTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("JobCategorye"); + + b.Navigation("JobMode"); + + b.Navigation("JobType"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobJournal", b => + { + b.HasOne("PARR.DAL.Models.Host", "Host") + .WithMany("JobJournals") + .HasForeignKey("HostId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PARR.DAL.Models.Job", "Job") + .WithMany("Journals") + .HasForeignKey("JobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PARR.DAL.Models.JobStatus", "Status") + .WithMany("Journals") + .HasForeignKey("JobStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Host"); + + b.Navigation("Job"); + + b.Navigation("Status"); + }); + + modelBuilder.Entity("PARR.DAL.Models.Host", b => + { + b.Navigation("JobJournals"); + }); + + modelBuilder.Entity("PARR.DAL.Models.Job", b => + { + b.Navigation("Journals"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobCategory", b => + { + b.Navigation("Jobs"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobMode", b => + { + b.Navigation("Jobs"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobStatus", b => + { + b.Navigation("Journals"); + }); + + modelBuilder.Entity("PARR.DAL.Models.JobType", b => + { + b.Navigation("Jobs"); + }); #pragma warning restore 612, 618 } } diff --git a/PARR.DAL/Models/Host.cs b/PARR.DAL/Models/Host.cs new file mode 100644 index 00000000..0db673eb --- /dev/null +++ b/PARR.DAL/Models/Host.cs @@ -0,0 +1,22 @@ +using PARR.DAL.Models.Base; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PARR.DAL.Models +{ + [Table("Hosts")] + public class Host : IBase + { + [Key] + public Guid Id { get; set; } + public DateTimeOffset DateCreated { get; set; } + public DateTimeOffset? DateModified { get; set; } + public required string HostName { get; set; } + public required string IP { get; set; } + public string? EK { get; set; } + + + + public ICollection JobJournals { get; set; } = new HashSet(); + } +} diff --git a/PARR.DAL/Models/Job.cs b/PARR.DAL/Models/Job.cs new file mode 100644 index 00000000..fa463235 --- /dev/null +++ b/PARR.DAL/Models/Job.cs @@ -0,0 +1,32 @@ +using PARR.DAL.Models.Base; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PARR.DAL.Models +{ + [Table("Jobs")] + public class Job : IBase + { + [Key] + public Guid Id { get; set; } + public DateTimeOffset DateCreated { get; set; } + public DateTimeOffset? DateModified { get; set; } + public required string Name { get; set; } + + + public Guid JobModeId { get; set; } + [ForeignKey(nameof(JobModeId))] + public JobMode? JobMode { get; set; } + + public Guid JobCategoryId { get; set; } + [ForeignKey(nameof(JobCategoryId))] + public JobCategory? JobCategorye { get; set; } + + public Guid JobTypeId { get; set; } + [ForeignKey(nameof(JobTypeId))] + public JobType? JobType { get; set; } + + + public ICollection Journals { get; set; } = new HashSet(); + } +} diff --git a/PARR.DAL/Models/JobCategory.cs b/PARR.DAL/Models/JobCategory.cs new file mode 100644 index 00000000..69c58dff --- /dev/null +++ b/PARR.DAL/Models/JobCategory.cs @@ -0,0 +1,24 @@ +using PARR.DAL.Models.Base; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PARR.DAL.Models +{ + [Table("JobCategories")] + public class JobCategory : IBase + { + [Key] + public Guid Id { get; set; } + public DateTimeOffset DateCreated { get; set; } + public DateTimeOffset? DateModified { get; set; } + /// + /// app, db + /// + public required string Name { get; set; } + public string? Description { get; set; } + + + + public ICollection Jobs { get; set; } = new HashSet(); + } +} diff --git a/PARR.DAL/Models/JobJournal.cs b/PARR.DAL/Models/JobJournal.cs new file mode 100644 index 00000000..40c60982 --- /dev/null +++ b/PARR.DAL/Models/JobJournal.cs @@ -0,0 +1,39 @@ +using PARR.DAL.Models.Base; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PARR.DAL.Models +{ + [Table("JobJournals")] + public class JobJournal : IBase + { + [Key] + public Guid Id { get; set; } + public DateTimeOffset DateCreated { get; set; } + public DateTimeOffset? DateModified { get; set; } + public string? DateOper { get; set; } + public string? Other { get; set; } + //Возможно нужно перенести в Job + public int? TimeOut { get; set; } + //Возможно нужно перенести в Job + public string? Info { get; set; } + + + + public Guid JobStatusId { get; set; } + + [ForeignKey(nameof(JobStatusId))] + public JobStatus? Status { get; set; } + + + public Guid HostId { get; set; } + + [ForeignKey(nameof(HostId))] + public Host? Host { get; set; } + + + public Guid JobId { get; set; } + [ForeignKey(nameof(JobId))] + public Job? Job { get; set; } + } +} diff --git a/PARR.DAL/Models/JobMode.cs b/PARR.DAL/Models/JobMode.cs new file mode 100644 index 00000000..ca0f74e8 --- /dev/null +++ b/PARR.DAL/Models/JobMode.cs @@ -0,0 +1,23 @@ +using PARR.DAL.Models.Base; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PARR.DAL.Models +{ + [Table("JobModes")] + public class JobMode : IBase + { + [Key] + public Guid Id { get; set; } + public DateTimeOffset DateCreated { get; set; } + public DateTimeOffset? DateModified { get; set; } + /// + /// manual, auto + /// + public required string Name { get; set; } + + + + public ICollection Jobs { get; set; } = new HashSet(); + } +} diff --git a/PARR.DAL/Models/JobStatus.cs b/PARR.DAL/Models/JobStatus.cs new file mode 100644 index 00000000..821f4e3d --- /dev/null +++ b/PARR.DAL/Models/JobStatus.cs @@ -0,0 +1,24 @@ +using PARR.DAL.Models.Base; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PARR.DAL.Models +{ + [Table("JobStatuses")] + public class JobStatus : IBase + { + [Key] + public Guid Id { get; set; } + public DateTimeOffset DateCreated { get; set; } + public DateTimeOffset? DateModified { get; set; } + /// + /// started, finished, timeout, error + /// + public required string Name { get; set; } + public string? Description { get; set; } + + + + public ICollection Journals { get; set; } = new HashSet(); + } +} diff --git a/PARR.DAL/Models/JobType.cs b/PARR.DAL/Models/JobType.cs new file mode 100644 index 00000000..54862ca5 --- /dev/null +++ b/PARR.DAL/Models/JobType.cs @@ -0,0 +1,23 @@ +using PARR.DAL.Models.Base; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PARR.DAL.Models +{ + [Table("JobTypes")] + public class JobType : IBase + { + [Key] + public Guid Id { get; set; } + public DateTimeOffset DateCreated { get; set; } + public DateTimeOffset? DateModified { get; set; } + /// + /// log-rotate, vacuum-psqld + /// + public required string Name { get; set; } + public string? Description { get; set; } + + + public ICollection Jobs { get; set; } = new HashSet(); + } +}