diff --git a/AsbCloudDb/Migrations/20211208103008_Update_operations_list.Designer.cs b/AsbCloudDb/Migrations/20211208103008_Update_operations_list.Designer.cs
new file mode 100644
index 00000000..ec57acd8
--- /dev/null
+++ b/AsbCloudDb/Migrations/20211208103008_Update_operations_list.Designer.cs
@@ -0,0 +1,2978 @@
+//
+using System;
+using System.Collections.Generic;
+using AsbCloudDb.Model;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+namespace AsbCloudDb.Migrations
+{
+ [DbContext(typeof(AsbCloudDbContext))]
+ [Migration("20211208103008_Update_operations_list")]
+ partial class Update_operations_list
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasPostgresExtension("adminpack")
+ .HasAnnotation("Relational:Collation", "Russian_Russia.1251")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63)
+ .HasAnnotation("ProductVersion", "5.0.10")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ modelBuilder.Entity("AsbCloudDb.Model.Cluster", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("Caption")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("caption")
+ .HasComment("Название");
+
+ b.Property("IdDeposit")
+ .HasColumnType("integer")
+ .HasColumnName("id_deposit");
+
+ b.Property("Latitude")
+ .HasColumnType("double precision")
+ .HasColumnName("latitude");
+
+ b.Property("Longitude")
+ .HasColumnType("double precision")
+ .HasColumnName("longitude");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdDeposit");
+
+ b.ToTable("t_cluster");
+
+ b
+ .HasComment("Кусты");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Company", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("Caption")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("caption");
+
+ b.Property("IdCompanyType")
+ .HasMaxLength(255)
+ .HasColumnType("integer")
+ .HasColumnName("id_company_type")
+ .HasComment("вид деятельности");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdCompanyType");
+
+ b.ToTable("t_company");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Caption = "ООО \"АСБ\"",
+ IdCompanyType = 3
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("Caption")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("caption");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_company_type");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Caption = "Недрапользователь"
+ },
+ new
+ {
+ Id = 2,
+ Caption = "Буровой подрядчик"
+ },
+ new
+ {
+ Id = 3,
+ Caption = "Сервис автоматизации бурения"
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Deposit", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("Caption")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("caption");
+
+ b.Property("Latitude")
+ .HasColumnType("double precision")
+ .HasColumnName("latitude");
+
+ b.Property("Longitude")
+ .HasColumnType("double precision")
+ .HasColumnName("longitude");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_deposit");
+
+ b
+ .HasComment("Месторождение");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.DrillFlowChart", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("AxialLoadMax")
+ .HasColumnType("double precision")
+ .HasColumnName("axial_load_max")
+ .HasComment("Максимальная нагрузка");
+
+ b.Property("AxialLoadMin")
+ .HasColumnType("double precision")
+ .HasColumnName("axial_load_min")
+ .HasComment("Минимальная нагрузка");
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Глубина окончания интервала");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Стартовая глубина");
+
+ b.Property("FlowMax")
+ .HasColumnType("double precision")
+ .HasColumnName("flow_max")
+ .HasComment("Максимальный расход");
+
+ b.Property("FlowMin")
+ .HasColumnType("double precision")
+ .HasColumnName("flow_min")
+ .HasComment("Минимальный расход");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("well_id")
+ .HasComment("Id скважины");
+
+ b.Property("IdWellOperationCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_operation_category")
+ .HasComment("Id типа операции");
+
+ b.Property("LastUpdate")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_update")
+ .HasComment("Дата последнего изменения");
+
+ b.Property("PressureMax")
+ .HasColumnType("double precision")
+ .HasColumnName("pressure_max")
+ .HasComment("Максимальное давление");
+
+ b.Property("PressureMin")
+ .HasColumnType("double precision")
+ .HasColumnName("pressure_min")
+ .HasComment("Минимальное давление");
+
+ b.Property("RotorSpeedMax")
+ .HasColumnType("double precision")
+ .HasColumnName("rotor_speed_max")
+ .HasComment("Максимальные обороты на ВСП");
+
+ b.Property("RotorSpeedMin")
+ .HasColumnType("double precision")
+ .HasColumnName("rotor_speed_min")
+ .HasComment("Минимальные обороты на ВСП");
+
+ b.Property("RotorTorqueMax")
+ .HasColumnType("double precision")
+ .HasColumnName("rotor_torque_max")
+ .HasComment("Максимальный момент на ВСП");
+
+ b.Property("RotorTorqueMin")
+ .HasColumnType("double precision")
+ .HasColumnName("rotor_torque_min")
+ .HasComment("Минимальный момент на ВСП");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdWell");
+
+ b.HasIndex("IdWellOperationCategory");
+
+ b.ToTable("t_drill_flow_chart");
+
+ b
+ .HasComment("Параметры корридоров бурения (диапазоны параметров бурения)");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.DrillParams", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("AxialLoadAvg")
+ .HasColumnType("double precision")
+ .HasColumnName("axial_load_avg")
+ .HasComment("Средняя нагрузка");
+
+ b.Property("AxialLoadMax")
+ .HasColumnType("double precision")
+ .HasColumnName("axial_load_max")
+ .HasComment("Максимальная нагрузка");
+
+ b.Property("AxialLoadMin")
+ .HasColumnType("double precision")
+ .HasColumnName("axial_load_min")
+ .HasComment("Минимальная нагрузка");
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Глубина окончания интервала");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Стартовая глубина");
+
+ b.Property("FlowAvg")
+ .HasColumnType("double precision")
+ .HasColumnName("flow_avg")
+ .HasComment("Средний расход");
+
+ b.Property("FlowMax")
+ .HasColumnType("double precision")
+ .HasColumnName("flow_max")
+ .HasComment("Максимальный расход");
+
+ b.Property("FlowMin")
+ .HasColumnType("double precision")
+ .HasColumnName("flow_min")
+ .HasComment("Минимальный расход");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("well_id")
+ .HasComment("Id скважины");
+
+ b.Property("IdWellSectionType")
+ .HasColumnType("integer")
+ .HasColumnName("id_wellsection_type")
+ .HasComment("Id с типом секции скважины");
+
+ b.Property("PressureAvg")
+ .HasColumnType("double precision")
+ .HasColumnName("pressure_avg")
+ .HasComment("Среднее давление");
+
+ b.Property("PressureMax")
+ .HasColumnType("double precision")
+ .HasColumnName("pressure_max")
+ .HasComment("Максимальное давление");
+
+ b.Property("PressureMin")
+ .HasColumnType("double precision")
+ .HasColumnName("pressure_min")
+ .HasComment("Минимальное давление");
+
+ b.Property("RotorSpeedAvg")
+ .HasColumnType("double precision")
+ .HasColumnName("rotor_speed_avg")
+ .HasComment("Средние обороты на ВСП");
+
+ b.Property("RotorSpeedMax")
+ .HasColumnType("double precision")
+ .HasColumnName("rotor_speed_max")
+ .HasComment("Максимальные обороты на ВСП");
+
+ b.Property("RotorSpeedMin")
+ .HasColumnType("double precision")
+ .HasColumnName("rotor_speed_min")
+ .HasComment("Минимальные обороты на ВСП");
+
+ b.Property("RotorTorqueAvg")
+ .HasColumnType("double precision")
+ .HasColumnName("rotor_torque_avg")
+ .HasComment("Средний момент на ВСП");
+
+ b.Property("RotorTorqueMax")
+ .HasColumnType("double precision")
+ .HasColumnName("rotor_torque_max")
+ .HasComment("Максимальный момент на ВСП");
+
+ b.Property("RotorTorqueMin")
+ .HasColumnType("double precision")
+ .HasColumnName("rotor_torque_min")
+ .HasComment("Минимальный момент на ВСП");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdWell");
+
+ b.HasIndex("IdWellSectionType");
+
+ b.ToTable("t_drill_params");
+
+ b
+ .HasComment("Режим бурения в секции (диапазоны параметров бурения)");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("Name")
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название категории");
+
+ b.Property("ShortName")
+ .HasColumnType("text")
+ .HasColumnName("short_name")
+ .HasComment("Короткое название категории");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_file_category");
+
+ b
+ .HasComment("Категории файлов");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Name = "Растворный сервис",
+ ShortName = "fluidService"
+ },
+ new
+ {
+ Id = 2,
+ Name = "Цементирование",
+ ShortName = "cement"
+ },
+ new
+ {
+ Id = 3,
+ Name = "ННБ",
+ ShortName = "nnb"
+ },
+ new
+ {
+ Id = 4,
+ Name = "ГТИ",
+ ShortName = "gti"
+ },
+ new
+ {
+ Id = 5,
+ Name = "Документы по скважине",
+ ShortName = "wellDocuments"
+ },
+ new
+ {
+ Id = 6,
+ Name = "Супервайзер",
+ ShortName = "supervisor"
+ },
+ new
+ {
+ Id = 7,
+ Name = "Мастер",
+ ShortName = "master"
+ },
+ new
+ {
+ Id = 8,
+ Name = "Последний замер бурового раствора ПЛАН",
+ ShortName = "fluidPlanLastData"
+ },
+ new
+ {
+ Id = 9,
+ Name = "Последний замер бурового раствора ФАКТ",
+ ShortName = "fluidFactLastData"
+ },
+ new
+ {
+ Id = 10,
+ Name = "Последние данные Шламограммы",
+ ShortName = "mudLastData"
+ },
+ new
+ {
+ Id = 11,
+ Name = "Последние данные ННБ",
+ ShortName = "nnbLastData"
+ },
+ new
+ {
+ Id = 12,
+ Name = "Рапорт",
+ ShortName = "report"
+ },
+ new
+ {
+ Id = 13,
+ Name = "Программа бурения, части",
+ ShortName = "ПБч"
+ },
+ new
+ {
+ Id = 14,
+ Name = "Программа бурения",
+ ShortName = "ПБ"
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("IdAuthor")
+ .HasColumnType("integer")
+ .HasColumnName("id_author")
+ .HasComment("Id пользователя, загрузившего файл");
+
+ b.Property("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category")
+ .HasComment("id категории файла");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("id скважины");
+
+ b.Property("IsDeleted")
+ .HasColumnType("boolean")
+ .HasColumnName("is_deleted")
+ .HasComment("Удален ли файл");
+
+ b.Property("Name")
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название файла");
+
+ b.Property("PublishInfo")
+ .HasColumnType("jsonb")
+ .HasColumnName("publish_info")
+ .HasComment("Информация о файле в облаке");
+
+ b.Property("Size")
+ .HasColumnType("bigint")
+ .HasColumnName("file_size")
+ .HasComment("Размер файла");
+
+ b.Property("UploadDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdAuthor");
+
+ b.HasIndex("IdCategory");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_file_info");
+
+ b
+ .HasComment("Файлы всех категорий");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.FileMark", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("Comment")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("comment")
+ .HasComment("Комментарий");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("date_created")
+ .HasComment("Дата совершенного действия");
+
+ b.Property("IdFile")
+ .HasColumnType("integer")
+ .HasColumnName("id_file")
+ .HasComment("id файла");
+
+ b.Property("IdMarkType")
+ .HasColumnType("integer")
+ .HasColumnName("id_mark_type")
+ .HasComment("0 - Согласован");
+
+ b.Property("IdUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_user")
+ .HasComment("id пользователя");
+
+ b.Property("IsDeleted")
+ .HasColumnType("boolean")
+ .HasColumnName("is_deleted")
+ .HasComment("Помечен ли файл как удаленный");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdFile");
+
+ b.HasIndex("IdUser");
+
+ b.ToTable("t_file_mark");
+
+ b
+ .HasComment("Действия с файлами.");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Measure", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property>("Data")
+ .HasColumnType("jsonb")
+ .HasColumnName("data")
+ .HasComment("Данные таблицы последних данных");
+
+ b.Property("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category")
+ .HasComment("id категории");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("id скважины");
+
+ b.Property("IsDeleted")
+ .HasColumnType("boolean")
+ .HasColumnName("is_deleted")
+ .HasComment("Пометка удаленным");
+
+ b.Property("Timestamp")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("timestamp")
+ .HasComment("время добавления");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdCategory");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_measure");
+
+ b
+ .HasComment("Таблица c данными для вкладки 'Последние данные'");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("Name")
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название категории");
+
+ b.Property("ShortName")
+ .HasColumnType("text")
+ .HasColumnName("short_name")
+ .HasComment("Короткое название категории");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_measure_category");
+
+ b
+ .HasComment("Категория последних данных");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Name = "Показатели бурового раствора",
+ ShortName = "Раствор"
+ },
+ new
+ {
+ Id = 2,
+ Name = "Шламограмма",
+ ShortName = "Шламограмма"
+ },
+ new
+ {
+ Id = 3,
+ Name = "ННБ",
+ ShortName = "ННБ"
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Permission", b =>
+ {
+ b.Property("IdUserRole")
+ .HasColumnType("integer")
+ .HasColumnName("id_user_role");
+
+ b.Property("IdPermission")
+ .HasColumnType("integer")
+ .HasColumnName("id_permission");
+
+ b.Property("PermissionValue")
+ .HasColumnType("integer")
+ .HasColumnName("permission_value");
+
+ b.HasKey("IdUserRole", "IdPermission");
+
+ b.HasIndex("IdPermission");
+
+ b.ToTable("t_permission");
+
+ b
+ .HasComment("Отношение ролей пользователей и разрешений доступа");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.PermissionInfo", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property>("BitDescription")
+ .HasColumnType("jsonb")
+ .HasColumnName("bit_description")
+ .HasComment("Описание каждого бита разрешений");
+
+ b.Property("Description")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("description")
+ .HasComment("Краткое описание");
+
+ b.Property("Name")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("name")
+ .HasComment("Название");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_permission_info");
+
+ b
+ .HasComment("Разрешения на доступ к данным");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b =>
+ {
+ b.Property("IdCompany")
+ .HasColumnType("integer")
+ .HasColumnName("id_company");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well");
+
+ b.HasKey("IdCompany", "IdWell");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_relation_company_well");
+
+ b
+ .HasComment("отношение скважин и компаний");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b =>
+ {
+ b.Property("IdUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_user");
+
+ b.Property("IdUserRole")
+ .HasColumnType("integer")
+ .HasColumnName("id_user_role");
+
+ b.HasKey("IdUser", "IdUserRole");
+
+ b.HasIndex("IdUserRole");
+
+ b.ToTable("t_relation_user_user_role");
+
+ b
+ .HasComment("Отношение пользователей и ролей");
+
+ b.HasData(
+ new
+ {
+ IdUser = 1,
+ IdUserRole = 2
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("Begin")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("begin");
+
+ b.Property("End")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("end")
+ .HasComment("timestamp with time zone");
+
+ b.Property("Format")
+ .HasColumnType("integer")
+ .HasColumnName("format")
+ .HasComment("Формат отчета");
+
+ b.Property("IdFile")
+ .HasColumnType("integer")
+ .HasColumnName("id_file")
+ .HasComment("id файла-родителя");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("id скважины");
+
+ b.Property("Step")
+ .HasColumnType("integer")
+ .HasColumnName("step")
+ .HasComment("размер шага в секундах");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdFile");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_report_property");
+
+ b
+ .HasComment("Отчеты с данными по буровым");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("Comment")
+ .HasColumnType("text")
+ .HasColumnName("comment")
+ .HasComment("комментарий для оператора");
+
+ b.Property("IdAuthor")
+ .HasColumnType("integer")
+ .HasColumnName("id_author")
+ .HasComment("Id пользователя, загрузившего файл");
+
+ b.Property("IdState")
+ .HasColumnType("integer")
+ .HasColumnName("id_state")
+ .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("id скважины");
+
+ b.Property("ObsolescenceSec")
+ .HasColumnType("integer")
+ .HasColumnName("obsolescence")
+ .HasComment("сек. до устаревания");
+
+ b.Property>("Setpoints")
+ .HasColumnType("jsonb")
+ .HasColumnName("setpoint_set")
+ .HasComment("Набор уставок");
+
+ b.Property("UploadDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdAuthor");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_setpoints_rquest");
+
+ b
+ .HasComment("Запросы на изменение уставок панели оператора");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("Info")
+ .HasColumnType("jsonb")
+ .HasColumnName("info")
+ .HasComment("Информация с панели о скважине");
+
+ b.Property("RemoteUid")
+ .HasColumnType("text")
+ .HasColumnName("remote_uid")
+ .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв.");
+
+ b.Property("TelemetryTimeZone")
+ .HasColumnType("jsonb")
+ .HasColumnName("timezone")
+ .HasComment("Смещение часового пояса от UTC");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index");
+
+ b.ToTable("t_telemetry");
+
+ b
+ .HasComment("таблица привязки телеметрии от комплектов к конкретной скважине.");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.TelemetryAnalysis", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("DurationSec")
+ .HasColumnType("integer")
+ .HasColumnName("duration_sec")
+ .HasComment("Кол-во секунд после предыдущей операции");
+
+ b.Property("IdOperation")
+ .HasColumnType("integer")
+ .HasColumnName("id_operation");
+
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.Property("IsBitPositionDecreasing")
+ .HasColumnType("boolean")
+ .HasColumnName("is_bit_position_decreasing")
+ .HasComment("Долото поднимается");
+
+ b.Property("IsBitPositionIncreasing")
+ .HasColumnType("boolean")
+ .HasColumnName("is_bit_position_increasing")
+ .HasComment("Долото спускается");
+
+ b.Property("IsBitPositionLt20")
+ .HasColumnType("boolean")
+ .HasColumnName("is_bit_posision_lt_20")
+ .HasComment("Положение долота меньше 20м");
+
+ b.Property("IsBlockPositionDecreasing")
+ .HasColumnType("boolean")
+ .HasColumnName("is_block_posision_decresing")
+ .HasComment("Талевый блок поднимается");
+
+ b.Property("IsBlockPositionIncreasing")
+ .HasColumnType("boolean")
+ .HasColumnName("is_block_posision_incresing")
+ .HasComment("Талевый блок спускается");
+
+ b.Property("IsHookWeightLt3")
+ .HasColumnType("boolean")
+ .HasColumnName("is_hook_weight_lt_3")
+ .HasComment("Вес на крюке менее 3т");
+
+ b.Property("IsHookWeightNotChanges")
+ .HasColumnType("boolean")
+ .HasColumnName("is_hook_weight_not_changes")
+ .HasComment("Вес на крюке не меняется");
+
+ b.Property("IsPressureGt20")
+ .HasColumnType("boolean")
+ .HasColumnName("is_pressure_gt_20")
+ .HasComment("Давоение более 20");
+
+ b.Property("IsPressureLt20")
+ .HasColumnType("boolean")
+ .HasColumnName("is_pressure_lt_20")
+ .HasComment("Давление менее 20");
+
+ b.Property("IsRotorSpeedGt5")
+ .HasColumnType("boolean")
+ .HasColumnName("is_rotor_speed_gt_3")
+ .HasComment("Обороты ротора выше 3");
+
+ b.Property("IsRotorSpeedLt5")
+ .HasColumnType("boolean")
+ .HasColumnName("is_rotor_speed_lt_3")
+ .HasComment("Обороты ротора ниже 3");
+
+ b.Property("IsWellDepthDecreasing")
+ .HasColumnType("boolean")
+ .HasColumnName("is_well_depth_decreasing")
+ .HasComment("Глубина забоя не увеличивается");
+
+ b.Property("IsWellDepthIncreasing")
+ .HasColumnType("boolean")
+ .HasColumnName("is_well_depth_increasing")
+ .HasComment("Глубина забоя увеличивается");
+
+ b.Property("OperationEndDepth")
+ .HasColumnType("double precision")
+ .HasColumnName("operation_end_depth")
+ .HasComment("Глубина, на которой закончилась операция");
+
+ b.Property("OperationStartDepth")
+ .HasColumnType("double precision")
+ .HasColumnName("operation_start_depth")
+ .HasComment("Глубина, на которой началась операция");
+
+ b.Property("UnixDate")
+ .HasColumnType("bigint")
+ .HasColumnName("unix_date")
+ .HasComment("Unix timestamp для Linq запросов с вычислением дат");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdOperation");
+
+ b.HasIndex("IdTelemetry");
+
+ b.ToTable("t_telemetry_analysis");
+
+ b
+ .HasComment("События на скважине");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b =>
+ {
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.Property("Date")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date")
+ .HasComment("'2021-10-19 18:23:54+05'");
+
+ b.Property("AxialLoad")
+ .HasColumnType("real")
+ .HasColumnName("axial_load")
+ .HasComment("Осевая нагрузка");
+
+ b.Property("AxialLoadLimitMax")
+ .HasColumnType("real")
+ .HasColumnName("axial_load_limit_max")
+ .HasComment("Осевая нагрузка. Аварийная макс.");
+
+ b.Property("AxialLoadSp")
+ .HasColumnType("real")
+ .HasColumnName("axial_load_sp")
+ .HasComment("Осевая нагрузка. Задание");
+
+ b.Property("BitDepth")
+ .HasColumnType("real")
+ .HasColumnName("bit_depth")
+ .HasComment("Положение инструмента");
+
+ b.Property("BlockPosition")
+ .HasColumnType("real")
+ .HasColumnName("block_position")
+ .HasComment("Высота талевого блока");
+
+ b.Property("BlockPositionMax")
+ .HasColumnType("real")
+ .HasColumnName("block_position_max")
+ .HasComment("Талевый блок. Макс положение");
+
+ b.Property("BlockPositionMin")
+ .HasColumnType("real")
+ .HasColumnName("block_position_min")
+ .HasComment("Талевый блок. Мин положение");
+
+ b.Property("BlockSpeed")
+ .HasColumnType("real")
+ .HasColumnName("block_speed")
+ .HasComment("Скорость талевого блока");
+
+ b.Property("BlockSpeedSp")
+ .HasColumnType("real")
+ .HasColumnName("block_speed_sp")
+ .HasComment("Скорости талевого блока. Задание");
+
+ b.Property("BlockSpeedSpDevelop")
+ .HasColumnType("real")
+ .HasColumnName("block_speed_sp_develop")
+ .HasComment("Талевый блок. Задание скорости для проработки");
+
+ b.Property("BlockSpeedSpRotor")
+ .HasColumnType("real")
+ .HasColumnName("block_speed_sp_rotor")
+ .HasComment("Талевый блок. Задание скорости для роторного бурения");
+
+ b.Property("BlockSpeedSpSlide")
+ .HasColumnType("real")
+ .HasColumnName("block_speed_sp_slide")
+ .HasComment("Талевый блок. Задание скорости для режима слайда");
+
+ b.Property("Flow")
+ .HasColumnType("real")
+ .HasColumnName("flow")
+ .HasComment("Расход");
+
+ b.Property("FlowDeltaLimitMax")
+ .HasColumnType("real")
+ .HasColumnName("flow_delta_limit_max")
+ .HasComment("Расход. Аварийный макс.");
+
+ b.Property("FlowIdle")
+ .HasColumnType("real")
+ .HasColumnName("flow_idle")
+ .HasComment("Расход. Холостой ход");
+
+ b.Property("HookWeight")
+ .HasColumnType("real")
+ .HasColumnName("hook_weight")
+ .HasComment("Вес на крюке");
+
+ b.Property("HookWeightIdle")
+ .HasColumnType("real")
+ .HasColumnName("hook_weight_idle")
+ .HasComment("Вес на крюке. Холостой ход");
+
+ b.Property("HookWeightLimitMax")
+ .HasColumnType("real")
+ .HasColumnName("hook_weight_limit_max")
+ .HasComment("Вес на крюке. Затяжка");
+
+ b.Property("HookWeightLimitMin")
+ .HasColumnType("real")
+ .HasColumnName("hook_weight_limit_min")
+ .HasComment("Вес на крюке. Посадка");
+
+ b.Property("IdFeedRegulator")
+ .HasColumnType("smallint")
+ .HasColumnName("id_feed_regulator")
+ .HasComment("Текущий критерий бурения");
+
+ b.Property("IdUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_user")
+ .HasComment("Пользователь САУБ");
+
+ b.Property("Mode")
+ .HasColumnType("smallint")
+ .HasColumnName("mode")
+ .HasComment("Режим САУБ");
+
+ b.Property("MseState")
+ .HasColumnType("smallint")
+ .HasColumnName("mse_state")
+ .HasComment("Текущее состояние работы MSE");
+
+ b.Property("Pressure")
+ .HasColumnType("real")
+ .HasColumnName("pressure")
+ .HasComment("Давление");
+
+ b.Property("PressureDeltaLimitMax")
+ .HasColumnType("real")
+ .HasColumnName("pressure_delta_limit_max")
+ .HasComment("Давление дифф. Аварийное макс.");
+
+ b.Property("PressureIdle")
+ .HasColumnType("real")
+ .HasColumnName("pressure_idle")
+ .HasComment("Давление. Холостой ход");
+
+ b.Property("PressureSp")
+ .HasColumnType("real")
+ .HasColumnName("pressure_sp")
+ .HasComment("Давление. Задание");
+
+ b.Property("PressureSpDevelop")
+ .HasColumnType("real")
+ .HasColumnName("pressure_sp_develop")
+ .HasComment("Давление. Задание для проработки");
+
+ b.Property("PressureSpRotor")
+ .HasColumnType("real")
+ .HasColumnName("pressure_sp_rotor")
+ .HasComment("Давление. Задание для роторного бурения");
+
+ b.Property("PressureSpSlide")
+ .HasColumnType("real")
+ .HasColumnName("pressure_sp_slide")
+ .HasComment("Давление. Задание для режима слайда");
+
+ b.Property("RotorSpeed")
+ .HasColumnType("real")
+ .HasColumnName("rotor_speed")
+ .HasComment("Обороты ротора");
+
+ b.Property("RotorTorque")
+ .HasColumnType("real")
+ .HasColumnName("rotor_torque")
+ .HasComment("Момент на роторе");
+
+ b.Property("RotorTorqueIdle")
+ .HasColumnType("real")
+ .HasColumnName("rotor_torque_idle")
+ .HasComment("Момент на роторе. Холостой ход");
+
+ b.Property("RotorTorqueLimitMax")
+ .HasColumnType("real")
+ .HasColumnName("rotor_torque_limit_max")
+ .HasComment("Момент на роторе. Аварийный макс.");
+
+ b.Property("RotorTorqueSp")
+ .HasColumnType("real")
+ .HasColumnName("rotor_torque_sp")
+ .HasComment("Момент на роторе. Задание");
+
+ b.Property("WellDepth")
+ .HasColumnType("real")
+ .HasColumnName("well_depth")
+ .HasComment("Глубина забоя");
+
+ b.HasKey("IdTelemetry", "Date");
+
+ b.ToTable("t_telemetry_data_saub");
+
+ b
+ .HasComment("набор основных данных по SAUB");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b =>
+ {
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.Property("Date")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date")
+ .HasComment("'2021-10-19 18:23:54+05'");
+
+ b.Property("BreakAngleK")
+ .HasColumnType("real")
+ .HasColumnName("break_angle_k")
+ .HasComment("Коэффициент для расчёта за какой угол нужно тормозить");
+
+ b.Property("BreakAngleLeft")
+ .HasColumnType("real")
+ .HasColumnName("break_angle_left")
+ .HasComment("Угол торможения влево при работе по моменту");
+
+ b.Property("EncoderResolution")
+ .HasColumnType("real")
+ .HasColumnName("encoder_resolution")
+ .HasComment(" Разрешение энкодера");
+
+ b.Property("Mode")
+ .HasColumnType("smallint")
+ .HasColumnName("mode")
+ .HasComment("Выбранный режим управления");
+
+ b.Property("PidMuxTorqueLeftLimit")
+ .HasColumnType("real")
+ .HasColumnName("pid_mux_torque_left_limit")
+ .HasComment(" Момент при котором определяется ехать назад по моменту или по скорости");
+
+ b.Property("PositionRight")
+ .HasColumnType("real")
+ .HasColumnName("position_right")
+ .HasComment("Крайний правый угол осциляции");
+
+ b.Property("PositionZero")
+ .HasColumnType("real")
+ .HasColumnName("position_zero")
+ .HasComment("Нулевая позиция осциляции");
+
+ b.Property("Ratio")
+ .HasColumnType("real")
+ .HasColumnName("ratio")
+ .HasComment(" Коэффициент редукции редектора");
+
+ b.Property("ReverseKTorque")
+ .HasColumnType("real")
+ .HasColumnName("reverse_k_torque")
+ .HasComment("Коэффициент на который умножается момент, для того чтобы система поняла что мы движемся в обратную сторону");
+
+ b.Property("ReverseSpeedSpZeroTime")
+ .HasColumnType("smallint")
+ .HasColumnName("reverse_speed_sp_zero_time")
+ .HasComment("Время выдачи сигнала нулевой скорости на при смене направления");
+
+ b.Property("RevolsLeftLimit")
+ .HasColumnType("real")
+ .HasColumnName("revols_left_limit")
+ .HasComment("Ограничение числа оборотов влево");
+
+ b.Property("RevolsLeftTotal")
+ .HasColumnType("real")
+ .HasColumnName("revols_left_total")
+ .HasComment("Суммарное количество оборотов влево");
+
+ b.Property("RevolsRightLimit")
+ .HasColumnType("real")
+ .HasColumnName("revols_right_limit")
+ .HasComment("Ограничение числа оборотов вправо");
+
+ b.Property("RevolsRightTotal")
+ .HasColumnType("real")
+ .HasColumnName("revols_right_total")
+ .HasComment("Суммарное количество оборотов вправо");
+
+ b.Property("RotorTorqueAvg")
+ .HasColumnType("real")
+ .HasColumnName("rotor_torque_avg")
+ .HasComment(" Момент в роторе средний");
+
+ b.Property("SpeedLeftSp")
+ .HasColumnType("real")
+ .HasColumnName("speed_left_sp")
+ .HasComment("Заданная скорость вращения влево");
+
+ b.Property("SpeedRightSp")
+ .HasColumnType("real")
+ .HasColumnName("speed_right_sp")
+ .HasComment("Заданная скорость вращения вправо");
+
+ b.Property("State")
+ .HasColumnType("smallint")
+ .HasColumnName("state")
+ .HasComment("Переменная этапа");
+
+ b.Property("TopDriveSpeed")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_speed")
+ .HasComment("Скорость СВП");
+
+ b.Property("TopDriveSpeedErr")
+ .HasColumnType("smallint")
+ .HasColumnName("top_drive_speed_err");
+
+ b.Property("TopDriveSpeedMax")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_speed_max")
+ .HasComment("верхний предел");
+
+ b.Property("TopDriveSpeedMin")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_speed_min")
+ .HasComment("нижний предел");
+
+ b.Property("TopDriveSpeedOffset")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_speed_offset")
+ .HasComment("смещение");
+
+ b.Property("TopDriveSpeedSpFrom")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_speed_sp_from")
+ .HasComment("Заданная скорость c СВП");
+
+ b.Property("TopDriveSpeedSpFromErr")
+ .HasColumnType("smallint")
+ .HasColumnName("top_drive_speed_sp_from_err");
+
+ b.Property("TopDriveSpeedSpFromMax")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_speed_sp_from_max");
+
+ b.Property("TopDriveSpeedSpFromMin")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_speed_sp_from_min");
+
+ b.Property("TopDriveSpeedSpFromOffset")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_speed_sp_from_offset");
+
+ b.Property("TopDriveSpeedSpTo")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_speed_sp_to")
+ .HasComment("Задание скорости на СВП");
+
+ b.Property("TopDriveSpeedSpToErr")
+ .HasColumnType("smallint")
+ .HasColumnName("top_drive_speed_sp_to_err");
+
+ b.Property("TopDriveSpeedSpToMax")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_speed_sp_to_max");
+
+ b.Property("TopDriveSpeedSpToMin")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_speed_sp_to_min");
+
+ b.Property("TopDriveSpeedSpToOffset")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_speed_sp_to_offset");
+
+ b.Property("TopDriveTorque")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_torque")
+ .HasComment("Момент СВП");
+
+ b.Property("TopDriveTorqueErr")
+ .HasColumnType("smallint")
+ .HasColumnName("top_drive_torque_err");
+
+ b.Property("TopDriveTorqueMax")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_torque_max");
+
+ b.Property("TopDriveTorqueMin")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_torque_min");
+
+ b.Property("TopDriveTorqueOffset")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_torque_offset");
+
+ b.Property("TopDriveTorqueSpFrom")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_torque_sp_from")
+ .HasComment("Заданный момент c СВП");
+
+ b.Property("TopDriveTorqueSpFromErr")
+ .HasColumnType("smallint")
+ .HasColumnName("top_drive_torque_sp_from_err");
+
+ b.Property("TopDriveTorqueSpFromMax")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_torque_sp_from_max");
+
+ b.Property("TopDriveTorqueSpFromMin")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_torque_sp_from_min");
+
+ b.Property("TopDriveTorqueSpFromOffset")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_torque_sp_from_offset");
+
+ b.Property("TopDriveTorqueSpTo")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_torque_sp_to")
+ .HasComment("Задание момента на СВП");
+
+ b.Property("TopDriveTorqueSpToErr")
+ .HasColumnType("smallint")
+ .HasColumnName("top_drive_torque_sp_to_err");
+
+ b.Property("TopDriveTorqueSpToMax")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_torque_sp_to_max");
+
+ b.Property("TopDriveTorqueSpToMin")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_torque_sp_to_min");
+
+ b.Property("TopDriveTorqueSpToOffset")
+ .HasColumnType("real")
+ .HasColumnName("top_drive_torque_sp_to_offset");
+
+ b.Property("TorqueLeftLimit")
+ .HasColumnType("real")
+ .HasColumnName("torque_left_limit")
+ .HasComment("Ограничение крутящего момента влево");
+
+ b.Property("TorqueRampTime")
+ .HasColumnType("real")
+ .HasColumnName("torque_ramp_time")
+ .HasComment("Время нарастания момента");
+
+ b.Property("TorqueRightLimit")
+ .HasColumnType("real")
+ .HasColumnName("torque_right_limit")
+ .HasComment("Ограничение крутящего момента вправо");
+
+ b.Property("TorqueStarting")
+ .HasColumnType("real")
+ .HasColumnName("torque_starting")
+ .HasComment(" Страгивающий момент");
+
+ b.Property("TurnLeftOnceByAngle")
+ .HasColumnType("real")
+ .HasColumnName("turn_left_once_by_angle")
+ .HasComment("Доворот по градусам единожды влево");
+
+ b.Property("TurnLeftOnceByRevols")
+ .HasColumnType("real")
+ .HasColumnName("turn_left_once_by_revols")
+ .HasComment("Доворот по оборотам единожды влево");
+
+ b.Property("TurnLeftOnceByTorque")
+ .HasColumnType("real")
+ .HasColumnName("turn_left_once_by_torque")
+ .HasComment("Доворот по моменту единожды влево");
+
+ b.Property("TurnRightOnceByAngle")
+ .HasColumnType("real")
+ .HasColumnName("turn_right_once_by_angle")
+ .HasComment("Доворот по градусам единожды вправо");
+
+ b.Property("TurnRightOnceByRevols")
+ .HasColumnType("real")
+ .HasColumnName("turn_right_once_by_revols")
+ .HasComment("Доворот по оборотам единожды вправо");
+
+ b.Property("TurnRightOnceByTorque")
+ .HasColumnType("real")
+ .HasColumnName("turn_right_once_by_torque")
+ .HasComment("Доворот по моменту единожды вправо");
+
+ b.Property("UnlockBySectorOut")
+ .HasColumnType("real")
+ .HasColumnName("unlock_by_sector_out")
+ .HasComment(" Градус отклонения от сектора для автоматического сброса блокировки");
+
+ b.Property("Ver")
+ .HasColumnType("real")
+ .HasColumnName("ver")
+ .HasComment("Версия ПО ПЛК");
+
+ b.Property("W2800")
+ .HasColumnType("smallint")
+ .HasColumnName("w2800")
+ .HasComment("Установка нуля энкодера");
+
+ b.Property("W2808")
+ .HasColumnType("smallint")
+ .HasColumnName("w2808")
+ .HasComment("Неисправность энкодера");
+
+ b.Property("W2810")
+ .HasColumnType("smallint")
+ .HasColumnName("w2810")
+ .HasComment(" автоматический сброс блокировки");
+
+ b.HasKey("IdTelemetry", "Date");
+
+ b.ToTable("t_telemetry_data_spin");
+
+ b
+ .HasComment("набор основных данных по SpinMaster");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b =>
+ {
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.Property("IdEvent")
+ .HasColumnType("integer")
+ .HasColumnName("id_event");
+
+ b.Property("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category");
+
+ b.Property("MessageTemplate")
+ .HasColumnType("text")
+ .HasColumnName("message_template");
+
+ b.HasKey("IdTelemetry", "IdEvent");
+
+ b.ToTable("t_telemetry_event");
+
+ b
+ .HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии.");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("Arg0")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("arg0")
+ .HasComment("Аргумент №0 для вставки в шаблон сообщения");
+
+ b.Property("Arg1")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("arg1");
+
+ b.Property("Arg2")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("arg2");
+
+ b.Property("Arg3")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("arg3");
+
+ b.Property("Date")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date");
+
+ b.Property("IdEvent")
+ .HasColumnType("integer")
+ .HasColumnName("id_event");
+
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.Property("IdTelemetryUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry_user")
+ .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака.");
+
+ b.Property("WellDepth")
+ .HasColumnType("double precision")
+ .HasColumnName("well_depth");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdTelemetry");
+
+ b.ToTable("t_telemetry_message");
+
+ b
+ .HasComment("Сообщения на буровых");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b =>
+ {
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.Property("IdUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_user");
+
+ b.Property("Level")
+ .HasColumnType("integer")
+ .HasColumnName("level");
+
+ b.Property("Name")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("name");
+
+ b.Property("Patronymic")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("patronymic");
+
+ b.Property("Surname")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("surname");
+
+ b.HasKey("IdTelemetry", "IdUser");
+
+ b.ToTable("t_telemetry_user");
+
+ b
+ .HasComment("Пользователи панели САУБ. Для сообщений.");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.User", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
+
+ b.Property("Email")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("email")
+ .HasComment("должность");
+
+ b.Property("IdCompany")
+ .HasColumnType("integer")
+ .HasColumnName("id_company");
+
+ b.Property