// <auto-generated />
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("20211124111523_AddSetpoints")]
    partial class AddSetpoints
    {
        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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("Caption")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("caption")
                        .HasComment("Название");

                    b.Property<int?>("IdDeposit")
                        .HasColumnType("integer")
                        .HasColumnName("id_deposit");

                    b.Property<double?>("Latitude")
                        .HasColumnType("double precision")
                        .HasColumnName("latitude");

                    b.Property<double?>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("Caption")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("caption");

                    b.Property<int>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("Caption")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("caption");

                    b.Property<double?>("Latitude")
                        .HasColumnType("double precision")
                        .HasColumnName("latitude");

                    b.Property<double?>("Longitude")
                        .HasColumnType("double precision")
                        .HasColumnName("longitude");

                    b.HasKey("Id");

                    b.ToTable("t_deposit");

                    b
                        .HasComment("Месторождение");
                });

            modelBuilder.Entity("AsbCloudDb.Model.DrillFlowChart", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<double>("AxialLoadMax")
                        .HasColumnType("double precision")
                        .HasColumnName("axial_load_max")
                        .HasComment("Максимальная нагрузка");

                    b.Property<double>("AxialLoadMin")
                        .HasColumnType("double precision")
                        .HasColumnName("axial_load_min")
                        .HasComment("Минимальная нагрузка");

                    b.Property<double>("DepthEnd")
                        .HasColumnType("double precision")
                        .HasColumnName("depth_end")
                        .HasComment("Глубина окончания интервала");

                    b.Property<double>("DepthStart")
                        .HasColumnType("double precision")
                        .HasColumnName("depth_start")
                        .HasComment("Стартовая глубина");

                    b.Property<double>("FlowMax")
                        .HasColumnType("double precision")
                        .HasColumnName("flow_max")
                        .HasComment("Максимальный расход");

                    b.Property<double>("FlowMin")
                        .HasColumnType("double precision")
                        .HasColumnName("flow_min")
                        .HasComment("Минимальный расход");

                    b.Property<int>("IdWell")
                        .HasColumnType("integer")
                        .HasColumnName("well_id")
                        .HasComment("Id скважины");

                    b.Property<int>("IdWellOperationCategory")
                        .HasColumnType("integer")
                        .HasColumnName("id_operation_category")
                        .HasComment("Id типа операции");

                    b.Property<DateTime>("LastUpdate")
                        .HasColumnType("timestamp without time zone")
                        .HasColumnName("last_update")
                        .HasComment("Дата последнего изменения");

                    b.Property<double>("PressureMax")
                        .HasColumnType("double precision")
                        .HasColumnName("pressure_max")
                        .HasComment("Максимальное давление");

                    b.Property<double>("PressureMin")
                        .HasColumnType("double precision")
                        .HasColumnName("pressure_min")
                        .HasComment("Минимальное давление");

                    b.Property<double>("RotorSpeedMax")
                        .HasColumnType("double precision")
                        .HasColumnName("rotor_speed_max")
                        .HasComment("Максимальные обороты на ВСП");

                    b.Property<double>("RotorSpeedMin")
                        .HasColumnType("double precision")
                        .HasColumnName("rotor_speed_min")
                        .HasComment("Минимальные обороты на ВСП");

                    b.Property<double>("RotorTorqueMax")
                        .HasColumnType("double precision")
                        .HasColumnName("rotor_torque_max")
                        .HasComment("Максимальный момент на ВСП");

                    b.Property<double>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<double>("AxialLoadAvg")
                        .HasColumnType("double precision")
                        .HasColumnName("axial_load_avg")
                        .HasComment("Средняя нагрузка");

                    b.Property<double>("AxialLoadMax")
                        .HasColumnType("double precision")
                        .HasColumnName("axial_load_max")
                        .HasComment("Максимальная нагрузка");

                    b.Property<double>("AxialLoadMin")
                        .HasColumnType("double precision")
                        .HasColumnName("axial_load_min")
                        .HasComment("Минимальная нагрузка");

                    b.Property<double>("DepthEnd")
                        .HasColumnType("double precision")
                        .HasColumnName("depth_end")
                        .HasComment("Глубина окончания интервала");

                    b.Property<double>("DepthStart")
                        .HasColumnType("double precision")
                        .HasColumnName("depth_start")
                        .HasComment("Стартовая глубина");

                    b.Property<double>("FlowAvg")
                        .HasColumnType("double precision")
                        .HasColumnName("flow_avg")
                        .HasComment("Средний расход");

                    b.Property<double>("FlowMax")
                        .HasColumnType("double precision")
                        .HasColumnName("flow_max")
                        .HasComment("Максимальный расход");

                    b.Property<double>("FlowMin")
                        .HasColumnType("double precision")
                        .HasColumnName("flow_min")
                        .HasComment("Минимальный расход");

                    b.Property<int>("IdWell")
                        .HasColumnType("integer")
                        .HasColumnName("well_id")
                        .HasComment("Id скважины");

                    b.Property<int>("IdWellSectionType")
                        .HasColumnType("integer")
                        .HasColumnName("id_wellsection_type")
                        .HasComment("Id с типом секции скважины");

                    b.Property<double>("PressureAvg")
                        .HasColumnType("double precision")
                        .HasColumnName("pressure_avg")
                        .HasComment("Среднее давление");

                    b.Property<double>("PressureMax")
                        .HasColumnType("double precision")
                        .HasColumnName("pressure_max")
                        .HasComment("Максимальное давление");

                    b.Property<double>("PressureMin")
                        .HasColumnType("double precision")
                        .HasColumnName("pressure_min")
                        .HasComment("Минимальное давление");

                    b.Property<double>("RotorSpeedAvg")
                        .HasColumnType("double precision")
                        .HasColumnName("rotor_speed_avg")
                        .HasComment("Средние обороты на ВСП");

                    b.Property<double>("RotorSpeedMax")
                        .HasColumnType("double precision")
                        .HasColumnName("rotor_speed_max")
                        .HasComment("Максимальные обороты на ВСП");

                    b.Property<double>("RotorSpeedMin")
                        .HasColumnType("double precision")
                        .HasColumnName("rotor_speed_min")
                        .HasComment("Минимальные обороты на ВСП");

                    b.Property<double>("RotorTorqueAvg")
                        .HasColumnType("double precision")
                        .HasColumnName("rotor_torque_avg")
                        .HasComment("Средний момент на ВСП");

                    b.Property<double>("RotorTorqueMax")
                        .HasColumnType("double precision")
                        .HasColumnName("rotor_torque_max")
                        .HasComment("Максимальный момент на ВСП");

                    b.Property<double>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("Name")
                        .HasColumnType("text")
                        .HasColumnName("name")
                        .HasComment("Название категории");

                    b.Property<string>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<int?>("IdAuthor")
                        .HasColumnType("integer")
                        .HasColumnName("id_author")
                        .HasComment("Id пользователя, загрузившего файл");

                    b.Property<int>("IdCategory")
                        .HasColumnType("integer")
                        .HasColumnName("id_category")
                        .HasComment("id категории файла");

                    b.Property<int>("IdWell")
                        .HasColumnType("integer")
                        .HasColumnName("id_well")
                        .HasComment("id скважины");

                    b.Property<bool>("IsDeleted")
                        .HasColumnType("boolean")
                        .HasColumnName("is_deleted")
                        .HasComment("Удален ли файл");

                    b.Property<string>("Name")
                        .HasColumnType("text")
                        .HasColumnName("name")
                        .HasComment("Название файла");

                    b.Property<FilePublishInfo>("PublishInfo")
                        .HasColumnType("jsonb")
                        .HasColumnName("publish_info")
                        .HasComment("Информация о файле в облаке");

                    b.Property<long>("Size")
                        .HasColumnType("bigint")
                        .HasColumnName("file_size")
                        .HasComment("Размер файла");

                    b.Property<DateTime>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("Comment")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("comment")
                        .HasComment("Комментарий");

                    b.Property<DateTime>("DateCreated")
                        .HasColumnType("timestamp without time zone")
                        .HasColumnName("date_created")
                        .HasComment("Дата совершенного действия");

                    b.Property<int>("IdFile")
                        .HasColumnType("integer")
                        .HasColumnName("id_file")
                        .HasComment("id файла");

                    b.Property<int>("IdMarkType")
                        .HasColumnType("integer")
                        .HasColumnName("id_mark_type")
                        .HasComment("0 - Согласован");

                    b.Property<int>("IdUser")
                        .HasColumnType("integer")
                        .HasColumnName("id_user")
                        .HasComment("id пользователя");

                    b.Property<bool>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<Dictionary<string, object>>("Data")
                        .HasColumnType("jsonb")
                        .HasColumnName("data")
                        .HasComment("Данные таблицы последних данных");

                    b.Property<int>("IdCategory")
                        .HasColumnType("integer")
                        .HasColumnName("id_category")
                        .HasComment("id категории");

                    b.Property<int>("IdWell")
                        .HasColumnType("integer")
                        .HasColumnName("id_well")
                        .HasComment("id скважины");

                    b.Property<bool>("IsDeleted")
                        .HasColumnType("boolean")
                        .HasColumnName("is_deleted")
                        .HasComment("Пометка удаленным");

                    b.Property<DateTime>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("Name")
                        .HasColumnType("text")
                        .HasColumnName("name")
                        .HasComment("Название категории");

                    b.Property<string>("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.RelationCompanyWell", b =>
                {
                    b.Property<int>("IdCompany")
                        .HasColumnType("integer")
                        .HasColumnName("id_company");

                    b.Property<int>("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.ReportProperty", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<DateTimeOffset>("Begin")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("begin");

                    b.Property<DateTimeOffset>("End")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("end")
                        .HasComment("timestamp with time zone");

                    b.Property<int>("Format")
                        .HasColumnType("integer")
                        .HasColumnName("format")
                        .HasComment("Формат отчета");

                    b.Property<int>("IdFile")
                        .HasColumnType("integer")
                        .HasColumnName("id_file")
                        .HasComment("id файла-родителя");

                    b.Property<int>("IdWell")
                        .HasColumnType("integer")
                        .HasColumnName("id_well")
                        .HasComment("id скважины");

                    b.Property<int>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("Comment")
                        .HasColumnType("text")
                        .HasColumnName("comment")
                        .HasComment("комментарий для оператора");

                    b.Property<int>("IdAuthor")
                        .HasColumnType("integer")
                        .HasColumnName("id_author")
                        .HasComment("Id пользователя, загрузившего файл");

                    b.Property<int>("IdState")
                        .HasColumnType("integer")
                        .HasColumnName("id_state")
                        .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело");

                    b.Property<int>("IdWell")
                        .HasColumnType("integer")
                        .HasColumnName("id_well")
                        .HasComment("id скважины");

                    b.Property<int>("ObsolescenceSec")
                        .HasColumnType("integer")
                        .HasColumnName("obsolescence")
                        .HasComment("сек. до устаревания");

                    b.Property<Dictionary<string, double>>("Setpoints")
                        .HasColumnType("jsonb")
                        .HasColumnName("setpoint_set")
                        .HasComment("Набор уставок");

                    b.Property<DateTime>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<TelemetryInfo>("Info")
                        .HasColumnType("jsonb")
                        .HasColumnName("info")
                        .HasComment("Информация с панели о скважине");

                    b.Property<string>("RemoteUid")
                        .HasColumnType("text")
                        .HasColumnName("remote_uid")
                        .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв.");

                    b.Property<TelemetryTimeZone>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<int>("DurationSec")
                        .HasColumnType("integer")
                        .HasColumnName("duration_sec")
                        .HasComment("Кол-во секунд после предыдущей операции");

                    b.Property<int>("IdOperation")
                        .HasColumnType("integer")
                        .HasColumnName("id_operation");

                    b.Property<int>("IdTelemetry")
                        .HasColumnType("integer")
                        .HasColumnName("id_telemetry");

                    b.Property<bool>("IsBitPositionDecreasing")
                        .HasColumnType("boolean")
                        .HasColumnName("is_bit_position_decreasing")
                        .HasComment("Долото поднимается");

                    b.Property<bool>("IsBitPositionIncreasing")
                        .HasColumnType("boolean")
                        .HasColumnName("is_bit_position_increasing")
                        .HasComment("Долото спускается");

                    b.Property<bool>("IsBitPositionLt20")
                        .HasColumnType("boolean")
                        .HasColumnName("is_bit_posision_lt_20")
                        .HasComment("Положение долота меньше 20м");

                    b.Property<bool>("IsBlockPositionDecreasing")
                        .HasColumnType("boolean")
                        .HasColumnName("is_block_posision_decresing")
                        .HasComment("Талевый блок поднимается");

                    b.Property<bool>("IsBlockPositionIncreasing")
                        .HasColumnType("boolean")
                        .HasColumnName("is_block_posision_incresing")
                        .HasComment("Талевый блок спускается");

                    b.Property<bool>("IsHookWeightLt3")
                        .HasColumnType("boolean")
                        .HasColumnName("is_hook_weight_lt_3")
                        .HasComment("Вес на крюке менее 3т");

                    b.Property<bool>("IsHookWeightNotChanges")
                        .HasColumnType("boolean")
                        .HasColumnName("is_hook_weight_not_changes")
                        .HasComment("Вес на крюке не меняется");

                    b.Property<bool>("IsPressureGt20")
                        .HasColumnType("boolean")
                        .HasColumnName("is_pressure_gt_20")
                        .HasComment("Давоение более 20");

                    b.Property<bool>("IsPressureLt20")
                        .HasColumnType("boolean")
                        .HasColumnName("is_pressure_lt_20")
                        .HasComment("Давление менее 20");

                    b.Property<bool>("IsRotorSpeedGt5")
                        .HasColumnType("boolean")
                        .HasColumnName("is_rotor_speed_gt_3")
                        .HasComment("Обороты ротора выше 3");

                    b.Property<bool>("IsRotorSpeedLt5")
                        .HasColumnType("boolean")
                        .HasColumnName("is_rotor_speed_lt_3")
                        .HasComment("Обороты ротора ниже 3");

                    b.Property<bool>("IsWellDepthDecreasing")
                        .HasColumnType("boolean")
                        .HasColumnName("is_well_depth_decreasing")
                        .HasComment("Глубина забоя не увеличивается");

                    b.Property<bool>("IsWellDepthIncreasing")
                        .HasColumnType("boolean")
                        .HasColumnName("is_well_depth_increasing")
                        .HasComment("Глубина забоя увеличивается");

                    b.Property<double?>("OperationEndDepth")
                        .HasColumnType("double precision")
                        .HasColumnName("operation_end_depth")
                        .HasComment("Глубина, на которой закончилась операция");

                    b.Property<double?>("OperationStartDepth")
                        .HasColumnType("double precision")
                        .HasColumnName("operation_start_depth")
                        .HasComment("Глубина, на которой началась операция");

                    b.Property<long>("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<int>("IdTelemetry")
                        .HasColumnType("integer")
                        .HasColumnName("id_telemetry");

                    b.Property<DateTime>("Date")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("date")
                        .HasComment("'2021-10-19 18:23:54+05'");

                    b.Property<float?>("AxialLoad")
                        .HasColumnType("real")
                        .HasColumnName("axial_load")
                        .HasComment("Осевая нагрузка");

                    b.Property<float?>("AxialLoadLimitMax")
                        .HasColumnType("real")
                        .HasColumnName("axial_load_limit_max")
                        .HasComment("Осевая нагрузка. Аварийная макс.");

                    b.Property<float?>("AxialLoadSp")
                        .HasColumnType("real")
                        .HasColumnName("axial_load_sp")
                        .HasComment("Осевая нагрузка. Задание");

                    b.Property<float?>("BitDepth")
                        .HasColumnType("real")
                        .HasColumnName("bit_depth")
                        .HasComment("Положение инструмента");

                    b.Property<float?>("BlockPosition")
                        .HasColumnType("real")
                        .HasColumnName("block_position")
                        .HasComment("Высота талевого блока");

                    b.Property<float?>("BlockPositionMax")
                        .HasColumnType("real")
                        .HasColumnName("block_position_max")
                        .HasComment("Талевый блок. Макс положение");

                    b.Property<float?>("BlockPositionMin")
                        .HasColumnType("real")
                        .HasColumnName("block_position_min")
                        .HasComment("Талевый блок. Мин положение");

                    b.Property<float?>("BlockSpeed")
                        .HasColumnType("real")
                        .HasColumnName("block_speed")
                        .HasComment("Скорость талевого блока");

                    b.Property<float?>("BlockSpeedSp")
                        .HasColumnType("real")
                        .HasColumnName("block_speed_sp")
                        .HasComment("Скорости талевого блока. Задание");

                    b.Property<float?>("BlockSpeedSpDevelop")
                        .HasColumnType("real")
                        .HasColumnName("block_speed_sp_develop")
                        .HasComment("Талевый блок. Задание скорости для проработки");

                    b.Property<float?>("BlockSpeedSpRotor")
                        .HasColumnType("real")
                        .HasColumnName("block_speed_sp_rotor")
                        .HasComment("Талевый блок. Задание скорости для роторного бурения");

                    b.Property<float?>("BlockSpeedSpSlide")
                        .HasColumnType("real")
                        .HasColumnName("block_speed_sp_slide")
                        .HasComment("Талевый блок. Задание скорости для режима слайда");

                    b.Property<float?>("Flow")
                        .HasColumnType("real")
                        .HasColumnName("flow")
                        .HasComment("Расход");

                    b.Property<float?>("FlowDeltaLimitMax")
                        .HasColumnType("real")
                        .HasColumnName("flow_delta_limit_max")
                        .HasComment("Расход. Аварийный макс.");

                    b.Property<float?>("FlowIdle")
                        .HasColumnType("real")
                        .HasColumnName("flow_idle")
                        .HasComment("Расход. Холостой ход");

                    b.Property<float?>("HookWeight")
                        .HasColumnType("real")
                        .HasColumnName("hook_weight")
                        .HasComment("Вес на крюке");

                    b.Property<float?>("HookWeightIdle")
                        .HasColumnType("real")
                        .HasColumnName("hook_weight_idle")
                        .HasComment("Вес на крюке. Холостой ход");

                    b.Property<float?>("HookWeightLimitMax")
                        .HasColumnType("real")
                        .HasColumnName("hook_weight_limit_max")
                        .HasComment("Вес на крюке. Затяжка");

                    b.Property<float?>("HookWeightLimitMin")
                        .HasColumnType("real")
                        .HasColumnName("hook_weight_limit_min")
                        .HasComment("Вес на крюке. Посадка");

                    b.Property<short?>("IdFeedRegulator")
                        .HasColumnType("smallint")
                        .HasColumnName("id_feed_regulator")
                        .HasComment("Текущий критерий бурения");

                    b.Property<int?>("IdUser")
                        .HasColumnType("integer")
                        .HasColumnName("id_user")
                        .HasComment("Пользователь САУБ");

                    b.Property<short?>("Mode")
                        .HasColumnType("smallint")
                        .HasColumnName("mode")
                        .HasComment("Режим САУБ");

                    b.Property<short?>("MseState")
                        .HasColumnType("smallint")
                        .HasColumnName("mse_state")
                        .HasComment("Текущее состояние работы MSE");

                    b.Property<float?>("Pressure")
                        .HasColumnType("real")
                        .HasColumnName("pressure")
                        .HasComment("Давление");

                    b.Property<float?>("PressureDeltaLimitMax")
                        .HasColumnType("real")
                        .HasColumnName("pressure_delta_limit_max")
                        .HasComment("Давление дифф. Аварийное макс.");

                    b.Property<float?>("PressureIdle")
                        .HasColumnType("real")
                        .HasColumnName("pressure_idle")
                        .HasComment("Давление. Холостой ход");

                    b.Property<float?>("PressureSp")
                        .HasColumnType("real")
                        .HasColumnName("pressure_sp")
                        .HasComment("Давление. Задание");

                    b.Property<float?>("PressureSpDevelop")
                        .HasColumnType("real")
                        .HasColumnName("pressure_sp_develop")
                        .HasComment("Давление. Задание для проработки");

                    b.Property<float?>("PressureSpRotor")
                        .HasColumnType("real")
                        .HasColumnName("pressure_sp_rotor")
                        .HasComment("Давление. Задание для роторного бурения");

                    b.Property<float?>("PressureSpSlide")
                        .HasColumnType("real")
                        .HasColumnName("pressure_sp_slide")
                        .HasComment("Давление. Задание для режима слайда");

                    b.Property<float?>("RotorSpeed")
                        .HasColumnType("real")
                        .HasColumnName("rotor_speed")
                        .HasComment("Обороты ротора");

                    b.Property<float?>("RotorTorque")
                        .HasColumnType("real")
                        .HasColumnName("rotor_torque")
                        .HasComment("Момент на роторе");

                    b.Property<float?>("RotorTorqueIdle")
                        .HasColumnType("real")
                        .HasColumnName("rotor_torque_idle")
                        .HasComment("Момент на роторе. Холостой ход");

                    b.Property<float?>("RotorTorqueLimitMax")
                        .HasColumnType("real")
                        .HasColumnName("rotor_torque_limit_max")
                        .HasComment("Момент на роторе. Аварийный макс.");

                    b.Property<float?>("RotorTorqueSp")
                        .HasColumnType("real")
                        .HasColumnName("rotor_torque_sp")
                        .HasComment("Момент на роторе. Задание");

                    b.Property<float?>("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<int>("IdTelemetry")
                        .HasColumnType("integer")
                        .HasColumnName("id_telemetry");

                    b.Property<DateTime>("Date")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("date")
                        .HasComment("'2021-10-19 18:23:54+05'");

                    b.Property<float?>("BreakAngleK")
                        .HasColumnType("real")
                        .HasColumnName("break_angle_k")
                        .HasComment("Коэффициент для расчёта за какой угол нужно тормозить");

                    b.Property<float?>("BreakAngleLeft")
                        .HasColumnType("real")
                        .HasColumnName("break_angle_left")
                        .HasComment("Угол торможения влево при работе по моменту");

                    b.Property<float?>("EncoderResolution")
                        .HasColumnType("real")
                        .HasColumnName("encoder_resolution")
                        .HasComment(" Разрешение энкодера");

                    b.Property<short?>("Mode")
                        .HasColumnType("smallint")
                        .HasColumnName("mode")
                        .HasComment("Выбранный режим управления");

                    b.Property<float?>("PidMuxTorqueLeftLimit")
                        .HasColumnType("real")
                        .HasColumnName("pid_mux_torque_left_limit")
                        .HasComment(" Момент при котором определяется ехать назад по моменту или по скорости");

                    b.Property<float?>("PositionRight")
                        .HasColumnType("real")
                        .HasColumnName("position_right")
                        .HasComment("Крайний правый угол осциляции");

                    b.Property<float?>("PositionZero")
                        .HasColumnType("real")
                        .HasColumnName("position_zero")
                        .HasComment("Нулевая позиция осциляции");

                    b.Property<float?>("Ratio")
                        .HasColumnType("real")
                        .HasColumnName("ratio")
                        .HasComment(" Коэффициент редукции редектора");

                    b.Property<float?>("ReverseKTorque")
                        .HasColumnType("real")
                        .HasColumnName("reverse_k_torque")
                        .HasComment("Коэффициент на который умножается момент, для того чтобы система поняла что мы движемся в обратную сторону");

                    b.Property<short?>("ReverseSpeedSpZeroTime")
                        .HasColumnType("smallint")
                        .HasColumnName("reverse_speed_sp_zero_time")
                        .HasComment("Время выдачи сигнала нулевой скорости на при смене направления");

                    b.Property<float?>("RevolsLeftLimit")
                        .HasColumnType("real")
                        .HasColumnName("revols_left_limit")
                        .HasComment("Ограничение числа оборотов влево");

                    b.Property<float?>("RevolsLeftTotal")
                        .HasColumnType("real")
                        .HasColumnName("revols_left_total")
                        .HasComment("Суммарное количество оборотов влево");

                    b.Property<float?>("RevolsRightLimit")
                        .HasColumnType("real")
                        .HasColumnName("revols_right_limit")
                        .HasComment("Ограничение числа оборотов вправо");

                    b.Property<float?>("RevolsRightTotal")
                        .HasColumnType("real")
                        .HasColumnName("revols_right_total")
                        .HasComment("Суммарное количество оборотов вправо");

                    b.Property<float?>("RotorTorqueAvg")
                        .HasColumnType("real")
                        .HasColumnName("rotor_torque_avg")
                        .HasComment(" Момент в роторе средний");

                    b.Property<float?>("SpeedLeftSp")
                        .HasColumnType("real")
                        .HasColumnName("speed_left_sp")
                        .HasComment("Заданная скорость вращения влево");

                    b.Property<float?>("SpeedRightSp")
                        .HasColumnType("real")
                        .HasColumnName("speed_right_sp")
                        .HasComment("Заданная скорость вращения вправо");

                    b.Property<short?>("State")
                        .HasColumnType("smallint")
                        .HasColumnName("state")
                        .HasComment("Переменная этапа");

                    b.Property<float?>("TopDriveSpeed")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_speed")
                        .HasComment("Скорость СВП");

                    b.Property<short?>("TopDriveSpeedErr")
                        .HasColumnType("smallint")
                        .HasColumnName("top_drive_speed_err");

                    b.Property<float?>("TopDriveSpeedMax")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_speed_max")
                        .HasComment("верхний предел");

                    b.Property<float?>("TopDriveSpeedMin")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_speed_min")
                        .HasComment("нижний предел");

                    b.Property<float?>("TopDriveSpeedOffset")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_speed_offset")
                        .HasComment("смещение");

                    b.Property<float?>("TopDriveSpeedSpFrom")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_speed_sp_from")
                        .HasComment("Заданная скорость c СВП");

                    b.Property<short?>("TopDriveSpeedSpFromErr")
                        .HasColumnType("smallint")
                        .HasColumnName("top_drive_speed_sp_from_err");

                    b.Property<float?>("TopDriveSpeedSpFromMax")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_speed_sp_from_max");

                    b.Property<float?>("TopDriveSpeedSpFromMin")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_speed_sp_from_min");

                    b.Property<float?>("TopDriveSpeedSpFromOffset")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_speed_sp_from_offset");

                    b.Property<float?>("TopDriveSpeedSpTo")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_speed_sp_to")
                        .HasComment("Задание скорости на СВП");

                    b.Property<short?>("TopDriveSpeedSpToErr")
                        .HasColumnType("smallint")
                        .HasColumnName("top_drive_speed_sp_to_err");

                    b.Property<float?>("TopDriveSpeedSpToMax")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_speed_sp_to_max");

                    b.Property<float?>("TopDriveSpeedSpToMin")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_speed_sp_to_min");

                    b.Property<float?>("TopDriveSpeedSpToOffset")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_speed_sp_to_offset");

                    b.Property<float?>("TopDriveTorque")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_torque")
                        .HasComment("Момент СВП");

                    b.Property<short?>("TopDriveTorqueErr")
                        .HasColumnType("smallint")
                        .HasColumnName("top_drive_torque_err");

                    b.Property<float?>("TopDriveTorqueMax")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_torque_max");

                    b.Property<float?>("TopDriveTorqueMin")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_torque_min");

                    b.Property<float?>("TopDriveTorqueOffset")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_torque_offset");

                    b.Property<float?>("TopDriveTorqueSpFrom")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_torque_sp_from")
                        .HasComment("Заданный момент c СВП");

                    b.Property<short?>("TopDriveTorqueSpFromErr")
                        .HasColumnType("smallint")
                        .HasColumnName("top_drive_torque_sp_from_err");

                    b.Property<float?>("TopDriveTorqueSpFromMax")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_torque_sp_from_max");

                    b.Property<float?>("TopDriveTorqueSpFromMin")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_torque_sp_from_min");

                    b.Property<float?>("TopDriveTorqueSpFromOffset")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_torque_sp_from_offset");

                    b.Property<float?>("TopDriveTorqueSpTo")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_torque_sp_to")
                        .HasComment("Задание момента на СВП");

                    b.Property<short?>("TopDriveTorqueSpToErr")
                        .HasColumnType("smallint")
                        .HasColumnName("top_drive_torque_sp_to_err");

                    b.Property<float?>("TopDriveTorqueSpToMax")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_torque_sp_to_max");

                    b.Property<float?>("TopDriveTorqueSpToMin")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_torque_sp_to_min");

                    b.Property<float?>("TopDriveTorqueSpToOffset")
                        .HasColumnType("real")
                        .HasColumnName("top_drive_torque_sp_to_offset");

                    b.Property<float?>("TorqueLeftLimit")
                        .HasColumnType("real")
                        .HasColumnName("torque_left_limit")
                        .HasComment("Ограничение крутящего момента влево");

                    b.Property<float?>("TorqueRampTime")
                        .HasColumnType("real")
                        .HasColumnName("torque_ramp_time")
                        .HasComment("Время нарастания момента");

                    b.Property<float?>("TorqueRightLimit")
                        .HasColumnType("real")
                        .HasColumnName("torque_right_limit")
                        .HasComment("Ограничение крутящего момента вправо");

                    b.Property<float?>("TorqueStarting")
                        .HasColumnType("real")
                        .HasColumnName("torque_starting")
                        .HasComment(" Страгивающий момент");

                    b.Property<float?>("TurnLeftOnceByAngle")
                        .HasColumnType("real")
                        .HasColumnName("turn_left_once_by_angle")
                        .HasComment("Доворот по градусам единожды влево");

                    b.Property<float?>("TurnLeftOnceByRevols")
                        .HasColumnType("real")
                        .HasColumnName("turn_left_once_by_revols")
                        .HasComment("Доворот по оборотам единожды влево");

                    b.Property<float?>("TurnLeftOnceByTorque")
                        .HasColumnType("real")
                        .HasColumnName("turn_left_once_by_torque")
                        .HasComment("Доворот по моменту единожды влево");

                    b.Property<float?>("TurnRightOnceByAngle")
                        .HasColumnType("real")
                        .HasColumnName("turn_right_once_by_angle")
                        .HasComment("Доворот по градусам единожды вправо");

                    b.Property<float?>("TurnRightOnceByRevols")
                        .HasColumnType("real")
                        .HasColumnName("turn_right_once_by_revols")
                        .HasComment("Доворот по оборотам единожды вправо");

                    b.Property<float?>("TurnRightOnceByTorque")
                        .HasColumnType("real")
                        .HasColumnName("turn_right_once_by_torque")
                        .HasComment("Доворот по моменту единожды вправо");

                    b.Property<float?>("UnlockBySectorOut")
                        .HasColumnType("real")
                        .HasColumnName("unlock_by_sector_out")
                        .HasComment(" Градус отклонения от сектора для автоматического сброса блокировки");

                    b.Property<float?>("Ver")
                        .HasColumnType("real")
                        .HasColumnName("ver")
                        .HasComment("Версия ПО ПЛК");

                    b.Property<short?>("W2800")
                        .HasColumnType("smallint")
                        .HasColumnName("w2800")
                        .HasComment("Установка нуля энкодера");

                    b.Property<short?>("W2808")
                        .HasColumnType("smallint")
                        .HasColumnName("w2808")
                        .HasComment("Неисправность энкодера");

                    b.Property<short?>("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<int>("IdTelemetry")
                        .HasColumnType("integer")
                        .HasColumnName("id_telemetry");

                    b.Property<int>("IdEvent")
                        .HasColumnType("integer")
                        .HasColumnName("id_event");

                    b.Property<int>("IdCategory")
                        .HasColumnType("integer")
                        .HasColumnName("id_category");

                    b.Property<string>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("Arg0")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("arg0")
                        .HasComment("Аргумент №0 для вставки в шаблон сообщения");

                    b.Property<string>("Arg1")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("arg1");

                    b.Property<string>("Arg2")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("arg2");

                    b.Property<string>("Arg3")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("arg3");

                    b.Property<DateTime>("Date")
                        .HasColumnType("timestamp with time zone")
                        .HasColumnName("date");

                    b.Property<int>("IdEvent")
                        .HasColumnType("integer")
                        .HasColumnName("id_event");

                    b.Property<int>("IdTelemetry")
                        .HasColumnType("integer")
                        .HasColumnName("id_telemetry");

                    b.Property<int?>("IdTelemetryUser")
                        .HasColumnType("integer")
                        .HasColumnName("id_telemetry_user")
                        .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака.");

                    b.Property<double>("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<int>("IdTelemetry")
                        .HasColumnType("integer")
                        .HasColumnName("id_telemetry");

                    b.Property<int>("IdUser")
                        .HasColumnType("integer")
                        .HasColumnName("id_user");

                    b.Property<int?>("Level")
                        .HasColumnType("integer")
                        .HasColumnName("level");

                    b.Property<string>("Name")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("name");

                    b.Property<string>("Patronymic")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("patronymic");

                    b.Property<string>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("Email")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("email")
                        .HasComment("должность");

                    b.Property<int?>("IdCompany")
                        .HasColumnType("integer")
                        .HasColumnName("id_company");

                    b.Property<int?>("IdRole")
                        .HasColumnType("integer")
                        .HasColumnName("id_role");

                    b.Property<int?>("Level")
                        .HasColumnType("integer")
                        .HasColumnName("level");

                    b.Property<string>("Login")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("login");

                    b.Property<string>("Name")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("name")
                        .HasComment("имя");

                    b.Property<string>("PasswordHash")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("password_hash")
                        .HasComment("соленый хэш пароля.\nпервые 5 символов - соль");

                    b.Property<string>("Patronymic")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("patronymic")
                        .HasComment("отчество");

                    b.Property<string>("Phone")
                        .HasMaxLength(50)
                        .HasColumnType("character varying(50)")
                        .HasColumnName("phone")
                        .HasComment("номер телефона");

                    b.Property<string>("Position")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("position")
                        .HasComment("email");

                    b.Property<short?>("State")
                        .HasColumnType("smallint")
                        .HasColumnName("state")
                        .HasComment("состояние:\n100 - удален");

                    b.Property<string>("Surname")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("surname")
                        .HasComment("фамилия");

                    b.HasKey("Id");

                    b.HasIndex("IdCompany");

                    b.HasIndex("IdRole");

                    b.HasIndex("Login")
                        .IsUnique();

                    b.ToTable("t_user");

                    b
                        .HasComment("Пользователи облака");

                    b.HasData(
                        new
                        {
                            Id = 1,
                            IdCompany = 1,
                            IdRole = 1,
                            Level = 2147483647,
                            Login = "dev",
                            Name = "Разработчик",
                            PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072"
                        });
                });

            modelBuilder.Entity("AsbCloudDb.Model.UserRole", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("Caption")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("caption")
                        .HasComment("Название");

                    b.HasKey("Id");

                    b.ToTable("t_user_role");

                    b
                        .HasComment("Роли пользователей в системе");

                    b.HasData(
                        new
                        {
                            Id = 1,
                            Caption = "Администратор"
                        },
                        new
                        {
                            Id = 2,
                            Caption = "Пользователь"
                        });
                });

            modelBuilder.Entity("AsbCloudDb.Model.Well", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("Caption")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("caption");

                    b.Property<int?>("IdCluster")
                        .HasColumnType("integer")
                        .HasColumnName("id_cluster");

                    b.Property<int>("IdState")
                        .HasColumnType("integer")
                        .HasColumnName("state")
                        .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена");

                    b.Property<int?>("IdTelemetry")
                        .HasColumnType("integer")
                        .HasColumnName("id_telemetry");

                    b.Property<int?>("IdWellType")
                        .HasColumnType("integer")
                        .HasColumnName("id_well_type");

                    b.Property<double?>("Latitude")
                        .HasColumnType("double precision")
                        .HasColumnName("latitude");

                    b.Property<double?>("Longitude")
                        .HasColumnType("double precision")
                        .HasColumnName("longitude");

                    b.HasKey("Id");

                    b.HasIndex("IdCluster");

                    b.HasIndex("IdTelemetry")
                        .IsUnique();

                    b.HasIndex("IdWellType");

                    b.ToTable("t_well");

                    b
                        .HasComment("скважины");
                });

            modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b =>
                {
                    b.Property<int>("IdWell")
                        .HasColumnType("integer")
                        .HasColumnName("id_well")
                        .HasComment("Id скважины получателя");

                    b.Property<int>("IdWellSrc")
                        .HasColumnType("integer")
                        .HasColumnName("id_well_src")
                        .HasComment("Id скважины композита");

                    b.Property<int>("IdWellSectionType")
                        .HasColumnType("integer")
                        .HasColumnName("id_well_section_type")
                        .HasComment("Id тип секции композита");

                    b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType");

                    b.HasIndex("IdWellSectionType");

                    b.HasIndex("IdWellSrc");

                    b.ToTable("t_well_сomposite");

                    b
                        .HasComment("Композитная скважина");
                });

            modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("CategoryInfo")
                        .HasColumnType("text")
                        .HasColumnName("category_info")
                        .HasComment("Доп. информация к выбраной категории");

                    b.Property<string>("Comment")
                        .HasColumnType("text")
                        .HasColumnName("comment")
                        .HasComment("Комментарий");

                    b.Property<DateTime>("DateStart")
                        .HasColumnType("timestamp without time zone")
                        .HasColumnName("date_start")
                        .HasComment("Дата начала операции");

                    b.Property<double>("DepthEnd")
                        .HasColumnType("double precision")
                        .HasColumnName("depth_end")
                        .HasComment("Глубина после завершения операции, м");

                    b.Property<double>("DepthStart")
                        .HasColumnType("double precision")
                        .HasColumnName("depth_start")
                        .HasComment("Глубина на начало операции, м");

                    b.Property<double>("DurationHours")
                        .HasColumnType("double precision")
                        .HasColumnName("duration_hours")
                        .HasComment("Продолжительность, часы");

                    b.Property<int>("IdCategory")
                        .HasColumnType("integer")
                        .HasColumnName("id_category")
                        .HasComment("Id категории операции");

                    b.Property<int>("IdType")
                        .HasColumnType("integer")
                        .HasColumnName("id_type")
                        .HasComment("0 = План или 1 = Факт");

                    b.Property<int>("IdWell")
                        .HasColumnType("integer")
                        .HasColumnName("id_well")
                        .HasComment("Id скважины");

                    b.Property<int>("IdWellSectionType")
                        .HasColumnType("integer")
                        .HasColumnName("id_well_section_type")
                        .HasComment("Id тип секции скважины");

                    b.HasKey("Id");

                    b.HasIndex("DateStart");

                    b.HasIndex("DepthEnd");

                    b.HasIndex("IdCategory");

                    b.HasIndex("IdWell");

                    b.HasIndex("IdWellSectionType");

                    b.ToTable("t_well_operation");

                    b
                        .HasComment("Данные по операциям на скважине");
                });

            modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<int>("Code")
                        .HasColumnType("integer")
                        .HasColumnName("code")
                        .HasComment("Код операции");

                    b.Property<string>("Name")
                        .HasColumnType("text")
                        .HasColumnName("name")
                        .HasComment("Название категории операции");

                    b.HasKey("Id");

                    b.ToTable("t_well_operation_category");

                    b
                        .HasComment("Справочник операций на скважине");

                    b.HasData(
                        new
                        {
                            Id = 1,
                            Code = 0,
                            Name = "Невозможно определить операцию"
                        },
                        new
                        {
                            Id = 2,
                            Code = 0,
                            Name = "Роторное бурение"
                        },
                        new
                        {
                            Id = 3,
                            Code = 0,
                            Name = "Слайдирование"
                        },
                        new
                        {
                            Id = 4,
                            Code = 0,
                            Name = "Подъем с проработкой"
                        },
                        new
                        {
                            Id = 5,
                            Code = 0,
                            Name = "Спуск с проработкой"
                        },
                        new
                        {
                            Id = 6,
                            Code = 0,
                            Name = "Подъем с промывкой"
                        },
                        new
                        {
                            Id = 7,
                            Code = 0,
                            Name = "Спуск с промывкой"
                        },
                        new
                        {
                            Id = 8,
                            Code = 0,
                            Name = "Спуск в скважину"
                        },
                        new
                        {
                            Id = 9,
                            Code = 0,
                            Name = "Спуск с вращением"
                        },
                        new
                        {
                            Id = 10,
                            Code = 0,
                            Name = "Подъем из скважины"
                        },
                        new
                        {
                            Id = 11,
                            Code = 0,
                            Name = "Подъем с вращением"
                        },
                        new
                        {
                            Id = 12,
                            Code = 0,
                            Name = "Промывка в покое"
                        },
                        new
                        {
                            Id = 13,
                            Code = 0,
                            Name = "Промывка с вращением"
                        },
                        new
                        {
                            Id = 14,
                            Code = 0,
                            Name = "Удержание в клиньях"
                        },
                        new
                        {
                            Id = 15,
                            Code = 0,
                            Name = "Неподвижное состояние"
                        },
                        new
                        {
                            Id = 16,
                            Code = 0,
                            Name = "Вращение без циркуляции"
                        },
                        new
                        {
                            Id = 17,
                            Code = 0,
                            Name = "На поверхности"
                        },
                        new
                        {
                            Id = 1001,
                            Code = 0,
                            Name = "Бурение"
                        },
                        new
                        {
                            Id = 1002,
                            Code = 0,
                            Name = "ГИС"
                        },
                        new
                        {
                            Id = 1003,
                            Code = 0,
                            Name = "ГФР"
                        },
                        new
                        {
                            Id = 1004,
                            Code = 0,
                            Name = "Монтаж ПВО"
                        },
                        new
                        {
                            Id = 1005,
                            Code = 0,
                            Name = "Демонтаж ПВО"
                        },
                        new
                        {
                            Id = 1006,
                            Code = 0,
                            Name = "Установка ФА"
                        },
                        new
                        {
                            Id = 1007,
                            Code = 0,
                            Name = "Оборудование устья"
                        },
                        new
                        {
                            Id = 1008,
                            Code = 0,
                            Name = "ОЗЦ"
                        },
                        new
                        {
                            Id = 1009,
                            Code = 0,
                            Name = "Оборудование устья"
                        },
                        new
                        {
                            Id = 1010,
                            Code = 0,
                            Name = "ОЗЦ"
                        },
                        new
                        {
                            Id = 1011,
                            Code = 0,
                            Name = "Начало цикла строительства скважины"
                        },
                        new
                        {
                            Id = 1012,
                            Code = 0,
                            Name = "Окончание цикла строительства скважины"
                        },
                        new
                        {
                            Id = 1013,
                            Code = 0,
                            Name = "Опрессовка ПВО"
                        },
                        new
                        {
                            Id = 1014,
                            Code = 0,
                            Name = "Опресовка Ц.К."
                        },
                        new
                        {
                            Id = 1015,
                            Code = 0,
                            Name = "Опрессовка ВЗД"
                        },
                        new
                        {
                            Id = 1016,
                            Code = 0,
                            Name = "Перевод скв на другой тип промывочной жидкости"
                        },
                        new
                        {
                            Id = 1017,
                            Code = 0,
                            Name = "Перезапись каротажа"
                        },
                        new
                        {
                            Id = 1018,
                            Code = 0,
                            Name = "Перетяжка талевого каната"
                        },
                        new
                        {
                            Id = 1019,
                            Code = 0,
                            Name = "Наращивание, промывка"
                        },
                        new
                        {
                            Id = 1020,
                            Code = 0,
                            Name = "Подъем инструмента"
                        },
                        new
                        {
                            Id = 1021,
                            Code = 0,
                            Name = "Подъем инструмента с промывкой"
                        },
                        new
                        {
                            Id = 1022,
                            Code = 0,
                            Name = "Обратная проработка"
                        },
                        new
                        {
                            Id = 1023,
                            Code = 0,
                            Name = "Сборка инструмента"
                        },
                        new
                        {
                            Id = 1024,
                            Code = 0,
                            Name = "Подготовительные работы"
                        },
                        new
                        {
                            Id = 1025,
                            Code = 0,
                            Name = "Сборка КНБК"
                        },
                        new
                        {
                            Id = 1026,
                            Code = 0,
                            Name = "Разборка КНБК"
                        },
                        new
                        {
                            Id = 1027,
                            Code = 0,
                            Name = "Промывка"
                        },
                        new
                        {
                            Id = 1028,
                            Code = 0,
                            Name = "Промежуточная промывка"
                        },
                        new
                        {
                            Id = 1029,
                            Code = 0,
                            Name = "Прокачка пачек"
                        },
                        new
                        {
                            Id = 1030,
                            Code = 0,
                            Name = "Разбуривание тех.оснастки"
                        },
                        new
                        {
                            Id = 1031,
                            Code = 0,
                            Name = "Ремонт"
                        },
                        new
                        {
                            Id = 1032,
                            Code = 0,
                            Name = "Спуск инструмента"
                        },
                        new
                        {
                            Id = 1033,
                            Code = 0,
                            Name = "Спуск инструмента с промывкой"
                        },
                        new
                        {
                            Id = 1034,
                            Code = 0,
                            Name = "Прямая проработка"
                        },
                        new
                        {
                            Id = 1035,
                            Code = 0,
                            Name = "Принудительная проработка"
                        },
                        new
                        {
                            Id = 1036,
                            Code = 0,
                            Name = "Спуск обсадной колонны"
                        },
                        new
                        {
                            Id = 1037,
                            Code = 0,
                            Name = "Тех СПО-подъем"
                        },
                        new
                        {
                            Id = 1038,
                            Code = 0,
                            Name = "Тех СПО-спуск"
                        },
                        new
                        {
                            Id = 1039,
                            Code = 0,
                            Name = "Техническое обслуживание"
                        },
                        new
                        {
                            Id = 1040,
                            Code = 0,
                            Name = "Цементаж"
                        },
                        new
                        {
                            Id = 1041,
                            Code = 0,
                            Name = "Шаблонировка ствола"
                        },
                        new
                        {
                            Id = 1042,
                            Code = 0,
                            Name = "Геологическое осложнение"
                        },
                        new
                        {
                            Id = 1043,
                            Code = 0,
                            Name = "НПВ"
                        },
                        new
                        {
                            Id = 1044,
                            Code = 0,
                            Name = "ВМР"
                        },
                        new
                        {
                            Id = 1045,
                            Code = 0,
                            Name = "Прочее"
                        },
                        new
                        {
                            Id = 1046,
                            Code = 0,
                            Name = "Спуск КНБК"
                        },
                        new
                        {
                            Id = 1047,
                            Code = 0,
                            Name = "Подъем КНБК"
                        },
                        new
                        {
                            Id = 1048,
                            Code = 0,
                            Name = "Спуск ОК"
                        },
                        new
                        {
                            Id = 1050,
                            Code = 0,
                            Name = "Промывка при спуске ОК"
                        });
                });

            modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("Caption")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("caption")
                        .HasComment("Название");

                    b.HasKey("Id");

                    b.ToTable("t_well_section_type");

                    b
                        .HasComment("конструкция секции скважины");

                    b.HasData(
                        new
                        {
                            Id = 1,
                            Caption = "Пилотный ствол"
                        },
                        new
                        {
                            Id = 2,
                            Caption = "Направление"
                        },
                        new
                        {
                            Id = 3,
                            Caption = "Кондуктор"
                        },
                        new
                        {
                            Id = 4,
                            Caption = "Эксплуатационная колонна"
                        },
                        new
                        {
                            Id = 5,
                            Caption = "Транспортный ствол"
                        },
                        new
                        {
                            Id = 6,
                            Caption = "Хвостовик"
                        });
                });

            modelBuilder.Entity("AsbCloudDb.Model.WellType", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer")
                        .HasColumnName("id")
                        .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);

                    b.Property<string>("Caption")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)")
                        .HasColumnName("caption")
                        .HasComment("Название");

                    b.HasKey("Id");

                    b.ToTable("t_well_type");

                    b
                        .HasComment("конструкция скважины");

                    b.HasData(
                        new
                        {
                            Id = 1,
                            Caption = "Наклонно-направленная"
                        },
                        new
                        {
                            Id = 2,
                            Caption = "Горизонтальная"
                        });
                });

            modelBuilder.Entity("AsbCloudDb.Model.Cluster", b =>
                {
                    b.HasOne("AsbCloudDb.Model.Deposit", "Deposit")
                        .WithMany("Clusters")
                        .HasForeignKey("IdDeposit")
                        .HasConstraintName("t_cluster_t_deposit_id_fk");

                    b.Navigation("Deposit");
                });

            modelBuilder.Entity("AsbCloudDb.Model.Company", b =>
                {
                    b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType")
                        .WithMany("Companies")
                        .HasForeignKey("IdCompanyType")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("CompanyType");
                });

            modelBuilder.Entity("AsbCloudDb.Model.DrillFlowChart", b =>
                {
                    b.HasOne("AsbCloudDb.Model.Well", "Well")
                        .WithMany()
                        .HasForeignKey("IdWell")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Well");
                });

            modelBuilder.Entity("AsbCloudDb.Model.DrillParams", b =>
                {
                    b.HasOne("AsbCloudDb.Model.Well", "Well")
                        .WithMany()
                        .HasForeignKey("IdWell")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType")
                        .WithMany("DrillParamsCollection")
                        .HasForeignKey("IdWellSectionType")
                        .HasConstraintName("t_drill_params_t_well_section_type_id_fk")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Well");

                    b.Navigation("WellSectionType");
                });

            modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b =>
                {
                    b.HasOne("AsbCloudDb.Model.User", "Author")
                        .WithMany("Files")
                        .HasForeignKey("IdAuthor");

                    b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory")
                        .WithMany()
                        .HasForeignKey("IdCategory")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("AsbCloudDb.Model.Well", "Well")
                        .WithMany()
                        .HasForeignKey("IdWell")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Author");

                    b.Navigation("FileCategory");

                    b.Navigation("Well");
                });

            modelBuilder.Entity("AsbCloudDb.Model.FileMark", b =>
                {
                    b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo")
                        .WithMany("FileMarks")
                        .HasForeignKey("IdFile")
                        .HasConstraintName("t_file_mark_t_file_info_fk")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("AsbCloudDb.Model.User", "User")
                        .WithMany("FileMarks")
                        .HasForeignKey("IdUser")
                        .HasConstraintName("t_user_t_file_mark_fk")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("FileInfo");

                    b.Navigation("User");
                });

            modelBuilder.Entity("AsbCloudDb.Model.Measure", b =>
                {
                    b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category")
                        .WithMany("Measures")
                        .HasForeignKey("IdCategory")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("AsbCloudDb.Model.Well", "Well")
                        .WithMany()
                        .HasForeignKey("IdWell")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Category");

                    b.Navigation("Well");
                });

            modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b =>
                {
                    b.HasOne("AsbCloudDb.Model.Company", "Company")
                        .WithMany("RelationCompaniesWells")
                        .HasForeignKey("IdCompany")
                        .HasConstraintName("t_relation_company_well_t_company_id_fk")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("AsbCloudDb.Model.Well", "Well")
                        .WithMany("RelationCompaniesWells")
                        .HasForeignKey("IdWell")
                        .HasConstraintName("t_relation_company_well_t_well_id_fk")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Company");

                    b.Navigation("Well");
                });

            modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b =>
                {
                    b.HasOne("AsbCloudDb.Model.FileInfo", "File")
                        .WithMany()
                        .HasForeignKey("IdFile")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("AsbCloudDb.Model.Well", "Well")
                        .WithMany()
                        .HasForeignKey("IdWell")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("File");

                    b.Navigation("Well");
                });

            modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b =>
                {
                    b.HasOne("AsbCloudDb.Model.User", "Author")
                        .WithMany()
                        .HasForeignKey("IdAuthor")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("AsbCloudDb.Model.Well", "Well")
                        .WithMany()
                        .HasForeignKey("IdWell")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Author");

                    b.Navigation("Well");
                });

            modelBuilder.Entity("AsbCloudDb.Model.TelemetryAnalysis", b =>
                {
                    b.HasOne("AsbCloudDb.Model.WellOperationCategory", "Operation")
                        .WithMany("Analysis")
                        .HasForeignKey("IdOperation")
                        .HasConstraintName("t_analysis_t_operation_id_fk")
                        .OnDelete(DeleteBehavior.SetNull)
                        .IsRequired();

                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
                        .WithMany("Analysis")
                        .HasForeignKey("IdTelemetry")
                        .HasConstraintName("t_analysis_t_telemetry_id_fk")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Operation");

                    b.Navigation("Telemetry");
                });

            modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b =>
                {
                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
                        .WithMany("DataSaub")
                        .HasForeignKey("IdTelemetry")
                        .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Telemetry");
                });

            modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b =>
                {
                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
                        .WithMany("DataSpin")
                        .HasForeignKey("IdTelemetry")
                        .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Telemetry");
                });

            modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b =>
                {
                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
                        .WithMany("Events")
                        .HasForeignKey("IdTelemetry")
                        .HasConstraintName("t_event_t_telemetry_id_fk")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Telemetry");
                });

            modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b =>
                {
                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
                        .WithMany("Messages")
                        .HasForeignKey("IdTelemetry")
                        .HasConstraintName("t_messages_t_telemetry_id_fk")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Telemetry");
                });

            modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b =>
                {
                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
                        .WithMany("Users")
                        .HasForeignKey("IdTelemetry")
                        .HasConstraintName("t_telemetry_user_t_telemetry_id_fk")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Telemetry");
                });

            modelBuilder.Entity("AsbCloudDb.Model.User", b =>
                {
                    b.HasOne("AsbCloudDb.Model.Company", "Company")
                        .WithMany("Users")
                        .HasForeignKey("IdCompany")
                        .HasConstraintName("t_user_t_company_id_fk")
                        .OnDelete(DeleteBehavior.SetNull);

                    b.HasOne("AsbCloudDb.Model.UserRole", "Role")
                        .WithMany("Users")
                        .HasForeignKey("IdRole");

                    b.Navigation("Company");

                    b.Navigation("Role");
                });

            modelBuilder.Entity("AsbCloudDb.Model.Well", b =>
                {
                    b.HasOne("AsbCloudDb.Model.Cluster", "Cluster")
                        .WithMany("Wells")
                        .HasForeignKey("IdCluster")
                        .HasConstraintName("t_well_t_cluster_id_fk");

                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
                        .WithOne("Well")
                        .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry")
                        .HasConstraintName("t_well_t_telemetry_id_fk")
                        .OnDelete(DeleteBehavior.SetNull);

                    b.HasOne("AsbCloudDb.Model.WellType", "WellType")
                        .WithMany("Wells")
                        .HasForeignKey("IdWellType");

                    b.Navigation("Cluster");

                    b.Navigation("Telemetry");

                    b.Navigation("WellType");
                });

            modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b =>
                {
                    b.HasOne("AsbCloudDb.Model.Well", "Well")
                        .WithMany("WellComposites")
                        .HasForeignKey("IdWell")
                        .HasConstraintName("t_well_сomposite_t_well_id_fk")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType")
                        .WithMany("WellComposites")
                        .HasForeignKey("IdWellSectionType")
                        .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("AsbCloudDb.Model.Well", "WellSrc")
                        .WithMany("WellCompositeSrcs")
                        .HasForeignKey("IdWellSrc")
                        .HasConstraintName("t_well_сomposite_src_t_well_id_fk")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Well");

                    b.Navigation("WellSectionType");

                    b.Navigation("WellSrc");
                });

            modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b =>
                {
                    b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory")
                        .WithMany()
                        .HasForeignKey("IdCategory")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("AsbCloudDb.Model.Well", "Well")
                        .WithMany("WellOperations")
                        .HasForeignKey("IdWell")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType")
                        .WithMany("WellOperations")
                        .HasForeignKey("IdWellSectionType")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("OperationCategory");

                    b.Navigation("Well");

                    b.Navigation("WellSectionType");
                });

            modelBuilder.Entity("AsbCloudDb.Model.Cluster", b =>
                {
                    b.Navigation("Wells");
                });

            modelBuilder.Entity("AsbCloudDb.Model.Company", b =>
                {
                    b.Navigation("RelationCompaniesWells");

                    b.Navigation("Users");
                });

            modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b =>
                {
                    b.Navigation("Companies");
                });

            modelBuilder.Entity("AsbCloudDb.Model.Deposit", b =>
                {
                    b.Navigation("Clusters");
                });

            modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b =>
                {
                    b.Navigation("FileMarks");
                });

            modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b =>
                {
                    b.Navigation("Measures");
                });

            modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b =>
                {
                    b.Navigation("Analysis");

                    b.Navigation("DataSaub");

                    b.Navigation("DataSpin");

                    b.Navigation("Events");

                    b.Navigation("Messages");

                    b.Navigation("Users");

                    b.Navigation("Well");
                });

            modelBuilder.Entity("AsbCloudDb.Model.User", b =>
                {
                    b.Navigation("FileMarks");

                    b.Navigation("Files");
                });

            modelBuilder.Entity("AsbCloudDb.Model.UserRole", b =>
                {
                    b.Navigation("Users");
                });

            modelBuilder.Entity("AsbCloudDb.Model.Well", b =>
                {
                    b.Navigation("RelationCompaniesWells");

                    b.Navigation("WellComposites");

                    b.Navigation("WellCompositeSrcs");

                    b.Navigation("WellOperations");
                });

            modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b =>
                {
                    b.Navigation("Analysis");
                });

            modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b =>
                {
                    b.Navigation("DrillParamsCollection");

                    b.Navigation("WellComposites");

                    b.Navigation("WellOperations");
                });

            modelBuilder.Entity("AsbCloudDb.Model.WellType", b =>
                {
                    b.Navigation("Wells");
                });
#pragma warning restore 612, 618
        }
    }
}