2021-09-10 11:28:57 +05:00
using AsbCloudDb.Model ;
2021-09-07 14:04:30 +05:00
using Microsoft.EntityFrameworkCore.Migrations ;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata ;
2021-09-10 11:28:57 +05:00
using System ;
using System.Collections.Generic ;
2021-09-07 14:04:30 +05:00
namespace AsbCloudDb.Migrations
{
public partial class Init : Migration
{
protected override void Up ( MigrationBuilder migrationBuilder )
{
migrationBuilder . AlterDatabase ( )
. Annotation ( "Npgsql:PostgresExtension:adminpack" , ",," ) ;
migrationBuilder . CreateTable (
name : "t_company_type" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
caption = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_company_type" , x = > x . id ) ;
} ) ;
migrationBuilder . CreateTable (
name : "t_deposit" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
caption = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true ) ,
latitude = table . Column < double > ( type : "double precision" , nullable : true ) ,
longitude = table . Column < double > ( type : "double precision" , nullable : true )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_deposit" , x = > x . id ) ;
} ,
comment : "Месторождение" ) ;
migrationBuilder . CreateTable (
name : "t_file_category" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
name = table . Column < string > ( type : "text" , nullable : true , comment : "Название категории" ) ,
short_name = table . Column < string > ( type : "text" , nullable : true , comment : "Короткое название категории" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_file_category" , x = > x . id ) ;
} ,
comment : "Категории файлов" ) ;
migrationBuilder . CreateTable (
name : "t_measure_category" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
name = table . Column < string > ( type : "text" , nullable : true , comment : "Название категории" ) ,
short_name = table . Column < string > ( type : "text" , nullable : true , comment : "Короткое название категории" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_measure_category" , x = > x . id ) ;
} ,
comment : "Категория последних данных" ) ;
migrationBuilder . CreateTable (
name : "t_telemetry" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
remote_uid = table . Column < string > ( type : "text" , nullable : true , comment : "Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв." ) ,
info = table . Column < TelemetryInfo > ( type : "jsonb" , nullable : true , comment : "Информация с панели о скважине" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_telemetry" , x = > x . id ) ;
} ,
comment : "таблица привязки телеметрии от комплектов к конкретной скважине." ) ;
migrationBuilder . CreateTable (
name : "t_user_role" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
caption = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true , comment : "Название" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_user_role" , x = > x . id ) ;
} ,
comment : "Роли пользователей в системе" ) ;
migrationBuilder . CreateTable (
name : "t_well_operation_category" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
name = table . Column < string > ( type : "text" , nullable : true , comment : "Название категории операции" ) ,
code = table . Column < int > ( type : "integer" , nullable : false , comment : "Код операции" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_well_operation_category" , x = > x . id ) ;
} ,
comment : "Справочник операций на скважине" ) ;
migrationBuilder . CreateTable (
name : "t_well_section_type" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
caption = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true , comment : "Название" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_well_section_type" , x = > x . id ) ;
} ,
comment : "конструкция секции скважины" ) ;
migrationBuilder . CreateTable (
name : "t_well_type" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
caption = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true , comment : "Название" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_well_type" , x = > x . id ) ;
} ,
comment : "конструкция скважины" ) ;
migrationBuilder . CreateTable (
name : "t_company" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
caption = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true ) ,
id_company_type = table . Column < int > ( type : "integer" , maxLength : 255 , nullable : false , comment : "вид деятельности" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_company" , x = > x . id ) ;
table . ForeignKey (
name : "FK_t_company_t_company_type_id_company_type" ,
column : x = > x . id_company_type ,
principalTable : "t_company_type" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
} ) ;
migrationBuilder . CreateTable (
name : "t_cluster" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
caption = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true , comment : "Название" ) ,
id_deposit = table . Column < int > ( type : "integer" , nullable : true ) ,
latitude = table . Column < double > ( type : "double precision" , nullable : true ) ,
longitude = table . Column < double > ( type : "double precision" , nullable : true )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_cluster" , x = > x . id ) ;
table . ForeignKey (
name : "t_cluster_t_deposit_id_fk" ,
column : x = > x . id_deposit ,
principalTable : "t_deposit" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Restrict ) ;
} ,
comment : "Кусты" ) ;
migrationBuilder . CreateTable (
name : "t_data_saub_base" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
id_telemetry = table . Column < int > ( type : "integer" , nullable : false ) ,
date = table . Column < DateTime > ( type : "timestamp with time zone" , nullable : false , comment : "'2021-10-19 18:23:54+05'" ) ,
mode = table . Column < int > ( type : "integer" , nullable : true , comment : "Режим САУБ" ) ,
id_user = table . Column < int > ( type : "integer" , nullable : true , comment : "Пользователь САУБ" ) ,
well_depth = table . Column < double > ( type : "double precision" , nullable : true , comment : "Глубина забоя" ) ,
bit_depth = table . Column < double > ( type : "double precision" , nullable : true , comment : "Положение инструмента" ) ,
block_position = table . Column < double > ( type : "double precision" , nullable : true , comment : "Высота талевого блока" ) ,
block_position_min = table . Column < double > ( type : "double precision" , nullable : true , comment : "Талевый блок. Мин положение" ) ,
block_position_max = table . Column < double > ( type : "double precision" , nullable : true , comment : "Талевый блок. Макс положение" ) ,
block_speed = table . Column < double > ( type : "double precision" , nullable : true , comment : "Скорость талевого блока" ) ,
block_speed_sp = table . Column < double > ( type : "double precision" , nullable : true , comment : "Скорости талевого блока. Задание" ) ,
block_speed_sp_rotor = table . Column < double > ( type : "double precision" , nullable : true , comment : "Талевый блок. Задание скорости для роторного бурения" ) ,
block_speed_sp_slide = table . Column < double > ( type : "double precision" , nullable : true , comment : "Талевый блок. Задание скорости для режима слайда" ) ,
block_speed_sp_develop = table . Column < double > ( type : "double precision" , nullable : true , comment : "Талевый блок. Задание скорости для проработки" ) ,
pressure = table . Column < double > ( type : "double precision" , nullable : true , comment : "Давление" ) ,
pressure_idle = table . Column < double > ( type : "double precision" , nullable : true , comment : "Давление. Холостой ход" ) ,
pressure_sp = table . Column < double > ( type : "double precision" , nullable : true , comment : "Давление. Задание" ) ,
pressure_sp_rotor = table . Column < double > ( type : "double precision" , nullable : true , comment : "Давление. Задание для роторного бурения" ) ,
pressure_sp_slide = table . Column < double > ( type : "double precision" , nullable : true , comment : "Давление. Задание для режима слайда" ) ,
pressure_sp_develop = table . Column < double > ( type : "double precision" , nullable : true , comment : "Давление. Задание для проработки" ) ,
pressure_delta_limit_max = table . Column < double > ( type : "double precision" , nullable : true , comment : "Давление дифф. Аварийное макс." ) ,
axial_load = table . Column < double > ( type : "double precision" , nullable : true , comment : "Осевая нагрузка" ) ,
axial_load_sp = table . Column < double > ( type : "double precision" , nullable : true , comment : "Осевая нагрузка. Задание" ) ,
axial_load_limit_max = table . Column < double > ( type : "double precision" , nullable : true , comment : "Осевая нагрузка. Аварийная макс." ) ,
hook_weight = table . Column < double > ( type : "double precision" , nullable : true , comment : "В е с на крюке" ) ,
hook_weight_idle = table . Column < double > ( type : "double precision" , nullable : true , comment : "В е с на крюке. Холостой ход" ) ,
hook_weight_limit_min = table . Column < double > ( type : "double precision" , nullable : true , comment : "В е с на крюке. Посадка" ) ,
hook_weight_limit_max = table . Column < double > ( type : "double precision" , nullable : true , comment : "В е с на крюке. Затяжка" ) ,
rotor_torque = table . Column < double > ( type : "double precision" , nullable : true , comment : "Момент на роторе" ) ,
rotor_torque_idle = table . Column < double > ( type : "double precision" , nullable : true , comment : "Момент на роторе. Холостой ход" ) ,
rotor_torque_sp = table . Column < double > ( type : "double precision" , nullable : true , comment : "Момент на роторе. Задание" ) ,
rotor_torque_limit_max = table . Column < double > ( type : "double precision" , nullable : true , comment : "Момент на роторе. Аварийный макс." ) ,
rotor_speed = table . Column < double > ( type : "double precision" , nullable : true , comment : "Обороты ротора" ) ,
flow = table . Column < double > ( type : "double precision" , nullable : true , comment : "Расход" ) ,
flow_idle = table . Column < double > ( type : "double precision" , nullable : true , comment : "Расход. Холостой ход" ) ,
flow_delta_limit_max = table . Column < double > ( type : "double precision" , nullable : true , comment : "Расход. Аварийный макс." ) ,
id_feed_regulator = table . Column < double > ( type : "double precision" , nullable : true , comment : "Текущий критерий бурения" ) ,
mse_state = table . Column < double > ( type : "double precision" , nullable : true , comment : "Текущее состояние работы MSE" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_data_saub_base" , x = > x . id ) ;
table . ForeignKey (
name : "t_data_saub_base_t_telemetry_id_fk" ,
column : x = > x . id_telemetry ,
principalTable : "t_telemetry" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Restrict ) ;
} ,
comment : "набор основных данных по SAUB" ) ;
migrationBuilder . CreateTable (
name : "t_telemetry_event" ,
columns : table = > new
{
id_event = table . Column < int > ( type : "integer" , nullable : false ) ,
id_telemetry = table . Column < int > ( type : "integer" , nullable : false ) ,
id_category = table . Column < int > ( type : "integer" , nullable : false ) ,
message_template = table . Column < string > ( type : "text" , nullable : true )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_telemetry_event" , x = > new { x . id_telemetry , x . id_event } ) ;
table . ForeignKey (
name : "t_event_t_telemetry_id_fk" ,
column : x = > x . id_telemetry ,
principalTable : "t_telemetry" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
} ,
comment : "Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии." ) ;
migrationBuilder . CreateTable (
name : "t_telemetry_message" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
id_telemetry = table . Column < int > ( type : "integer" , nullable : false ) ,
id_event = table . Column < int > ( type : "integer" , nullable : false ) ,
id_telemetry_user = table . Column < int > ( type : "integer" , nullable : true , comment : "Пользователь панели отправляющей телеметрию. не пользователь облака." ) ,
date = table . Column < DateTime > ( type : "timestamp with time zone" , nullable : false ) ,
arg0 = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true , comment : "Аргумент №0 для вставки в шаблон сообщения" ) ,
arg1 = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true ) ,
arg2 = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true ) ,
arg3 = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_telemetry_message" , x = > x . id ) ;
table . ForeignKey (
name : "t_messages_t_telemetry_id_fk" ,
column : x = > x . id_telemetry ,
principalTable : "t_telemetry" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
} ,
comment : "Сообщения на буровых" ) ;
migrationBuilder . CreateTable (
name : "t_telemetry_user" ,
columns : table = > new
{
id_user = table . Column < int > ( type : "integer" , nullable : false ) ,
id_telemetry = table . Column < int > ( type : "integer" , nullable : false ) ,
name = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true ) ,
surname = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true ) ,
patronymic = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true ) ,
level = table . Column < int > ( type : "integer" , nullable : true )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_telemetry_user" , x = > new { x . id_telemetry , x . id_user } ) ;
table . ForeignKey (
name : "t_telemetry_user_t_telemetry_id_fk" ,
column : x = > x . id_telemetry ,
principalTable : "t_telemetry" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Restrict ) ;
} ,
comment : "Пользователи панели САУБ. Для сообщений." ) ;
migrationBuilder . CreateTable (
name : "t_telemetry_analysis" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
id_telemetry = table . Column < int > ( type : "integer" , nullable : false ) ,
id_operation = table . Column < int > ( type : "integer" , nullable : false ) ,
unix_date = table . Column < long > ( type : "bigint" , nullable : false , comment : "Unix timestamp для Linq запросов с вычислением дат" ) ,
duration_sec = table . Column < int > ( type : "integer" , nullable : false , comment : "Кол-во секунд после предыдущей операции" ) ,
operation_start_depth = table . Column < double > ( type : "double precision" , nullable : true , comment : "Глубина, на которой началась операция" ) ,
operation_end_depth = table . Column < double > ( type : "double precision" , nullable : true , comment : "Глубина, на которой закончилась операция" ) ,
is_well_depth_increasing = table . Column < bool > ( type : "boolean" , nullable : false , comment : "Глубина забоя увеличивается" ) ,
is_well_depth_decreasing = table . Column < bool > ( type : "boolean" , nullable : false , comment : "Глубина забоя не увеличивается" ) ,
is_bit_position_increasing = table . Column < bool > ( type : "boolean" , nullable : false , comment : "Долото спускается" ) ,
is_bit_position_decreasing = table . Column < bool > ( type : "boolean" , nullable : false , comment : "Долото поднимается" ) ,
is_bit_posision_lt_20 = table . Column < bool > ( type : "boolean" , nullable : false , comment : "Положение долота меньше 20м" ) ,
is_block_posision_incresing = table . Column < bool > ( type : "boolean" , nullable : false , comment : "Талевый блок спускается" ) ,
is_block_posision_decresing = table . Column < bool > ( type : "boolean" , nullable : false , comment : "Талевый блок поднимается" ) ,
is_rotor_speed_lt_3 = table . Column < bool > ( type : "boolean" , nullable : false , comment : "Обороты ротора ниже 3" ) ,
is_rotor_speed_gt_3 = table . Column < bool > ( type : "boolean" , nullable : false , comment : "Обороты ротора выше 3" ) ,
is_pressure_lt_20 = table . Column < bool > ( type : "boolean" , nullable : false , comment : "Давление менее 20" ) ,
is_pressure_gt_20 = table . Column < bool > ( type : "boolean" , nullable : false , comment : "Давоение более 20" ) ,
is_hook_weight_not_changes = table . Column < bool > ( type : "boolean" , nullable : false , comment : "В е с на крюке не меняется" ) ,
is_hook_weight_lt_3 = table . Column < bool > ( type : "boolean" , nullable : false , comment : "В е с на крюке менее 3т" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_telemetry_analysis" , x = > x . id ) ;
table . ForeignKey (
name : "t_analysis_t_operation_id_fk" ,
column : x = > x . id_operation ,
principalTable : "t_well_operation_category" ,
principalColumn : "id" ,
onDelete : ReferentialAction . SetNull ) ;
table . ForeignKey (
name : "t_analysis_t_telemetry_id_fk" ,
column : x = > x . id_telemetry ,
principalTable : "t_telemetry" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
} ,
comment : "События на скважине" ) ;
migrationBuilder . CreateTable (
name : "t_user" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
id_company = table . Column < int > ( type : "integer" , nullable : true ) ,
id_role = table . Column < int > ( type : "integer" , nullable : true ) ,
login = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true ) ,
password_hash = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true , comment : "соленый хэш пароля.\nпе р вые 5 символов - соль" ) ,
state = table . Column < short > ( type : "smallint" , nullable : true , comment : "состояние:\n100 - удален" ) ,
level = table . Column < int > ( type : "integer" , nullable : true ) ,
name = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true , comment : "имя" ) ,
surname = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true , comment : "фамилия" ) ,
patronymic = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true , comment : "отчество" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_user" , x = > x . id ) ;
table . ForeignKey (
name : "FK_t_user_t_user_role_id_role" ,
column : x = > x . id_role ,
principalTable : "t_user_role" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Restrict ) ;
table . ForeignKey (
name : "t_user_t_company_id_fk" ,
column : x = > x . id_company ,
principalTable : "t_company" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Restrict ) ;
} ,
comment : "Пользователи облака" ) ;
migrationBuilder . CreateTable (
name : "t_well" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
caption = table . Column < string > ( type : "character varying(255)" , maxLength : 255 , nullable : true ) ,
id_cluster = table . Column < int > ( type : "integer" , nullable : true ) ,
id_telemetry = table . Column < int > ( type : "integer" , nullable : true ) ,
id_well_type = table . Column < int > ( type : "integer" , nullable : true ) ,
latitude = table . Column < double > ( type : "double precision" , nullable : true ) ,
longitude = table . Column < double > ( type : "double precision" , nullable : true )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_well" , x = > x . id ) ;
table . ForeignKey (
name : "FK_t_well_t_well_type_id_well_type" ,
column : x = > x . id_well_type ,
principalTable : "t_well_type" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Restrict ) ;
table . ForeignKey (
name : "t_well_t_cluster_id_fk" ,
column : x = > x . id_cluster ,
principalTable : "t_cluster" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Restrict ) ;
table . ForeignKey (
name : "t_well_t_telemetry_id_fk" ,
column : x = > x . id_telemetry ,
principalTable : "t_telemetry" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Restrict ) ;
} ,
comment : "скважины" ) ;
migrationBuilder . CreateTable (
name : "t_file_info" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
id_well = table . Column < int > ( type : "integer" , nullable : false , comment : "id скважины" ) ,
id_author = table . Column < int > ( type : "integer" , nullable : true , comment : "Id пользователя, загрузившего файл" ) ,
id_category = table . Column < int > ( type : "integer" , nullable : false , comment : "id категории файла" ) ,
name = table . Column < string > ( type : "text" , nullable : true , comment : "Название файла" ) ,
date = table . Column < DateTime > ( type : "timestamp with time zone" , nullable : false ) ,
file_size = table . Column < long > ( type : "bigint" , nullable : false , comment : "Размер файла" ) ,
is_deleted = table . Column < bool > ( type : "boolean" , nullable : false , comment : "Удален ли файл" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_file_info" , x = > x . id ) ;
table . ForeignKey (
name : "FK_t_file_info_t_file_category_id_category" ,
column : x = > x . id_category ,
principalTable : "t_file_category" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
table . ForeignKey (
name : "FK_t_file_info_t_user_id_author" ,
column : x = > x . id_author ,
principalTable : "t_user" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Restrict ) ;
table . ForeignKey (
name : "FK_t_file_info_t_well_id_well" ,
column : x = > x . id_well ,
principalTable : "t_well" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
} ,
comment : "Файлы всех категорий" ) ;
migrationBuilder . CreateTable (
name : "t_measure" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
id_well = table . Column < int > ( type : "integer" , nullable : false , comment : "id скважины" ) ,
id_category = table . Column < int > ( type : "integer" , nullable : false , comment : "id категории" ) ,
timestamp = table . Column < DateTime > ( type : "timestamp without time zone" , nullable : false , comment : "время добавления" ) ,
data = table . Column < Dictionary < string , object > > ( type : "jsonb" , nullable : true , comment : "Данные таблицы последних данных" ) ,
is_deleted = table . Column < bool > ( type : "boolean" , nullable : false , comment : "Пометка удаленным" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_measure" , x = > x . id ) ;
table . ForeignKey (
name : "FK_t_measure_t_measure_category_id_category" ,
column : x = > x . id_category ,
principalTable : "t_measure_category" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
table . ForeignKey (
name : "FK_t_measure_t_well_id_well" ,
column : x = > x . id_well ,
principalTable : "t_well" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
} ,
comment : "Таблица c данными для вкладки 'Последние данные'" ) ;
migrationBuilder . CreateTable (
name : "t_relation_company_well" ,
columns : table = > new
{
id_well = table . Column < int > ( type : "integer" , nullable : false ) ,
id_company = table . Column < int > ( type : "integer" , nullable : false )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_relation_company_well" , x = > new { x . id_company , x . id_well } ) ;
table . ForeignKey (
name : "t_relation_company_well_t_company_id_fk" ,
column : x = > x . id_company ,
principalTable : "t_company" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
table . ForeignKey (
name : "t_relation_company_well_t_well_id_fk" ,
column : x = > x . id_well ,
principalTable : "t_well" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
} ,
comment : "отношение скважин и компаний" ) ;
migrationBuilder . CreateTable (
name : "t_well_operation" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
id_well = table . Column < int > ( type : "integer" , nullable : false , comment : "Id скважины" ) ,
id_well_section_type = table . Column < int > ( type : "integer" , nullable : false , comment : "Id тип секции скважины" ) ,
id_category = table . Column < int > ( type : "integer" , nullable : false , comment : "Id категории операции" ) ,
id_type = table . Column < int > ( type : "integer" , nullable : false , comment : "0 = План или 1 = Факт" ) ,
depth = table . Column < double > ( type : "double precision" , nullable : false , comment : "Глубина, на которой производилась операция" ) ,
date = table . Column < DateTime > ( type : "timestamp without time zone" , nullable : false , comment : "Дата начала операции" ) ,
duration_hours = table . Column < double > ( type : "double precision" , nullable : false , comment : "Продолжительность в часах" ) ,
category_info = table . Column < string > ( type : "text" , nullable : true , comment : "Доп. информация к выбраной категории" ) ,
comment = table . Column < string > ( type : "text" , nullable : true , comment : "Комментарий" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_well_operation" , x = > x . id ) ;
table . ForeignKey (
name : "FK_t_well_operation_t_well_id_well" ,
column : x = > x . id_well ,
principalTable : "t_well" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
table . ForeignKey (
name : "FK_t_well_operation_t_well_operation_category_id_category" ,
column : x = > x . id_category ,
principalTable : "t_well_operation_category" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
table . ForeignKey (
name : "FK_t_well_operation_t_well_section_type_id_well_section_type" ,
column : x = > x . id_well_section_type ,
principalTable : "t_well_section_type" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
} ,
comment : "Данные по операциям на скважине" ) ;
migrationBuilder . CreateTable (
name : "t_report_property" ,
columns : table = > new
{
id = table . Column < int > ( type : "integer" , nullable : false )
. Annotation ( "Npgsql:ValueGenerationStrategy" , NpgsqlValueGenerationStrategy . IdentityByDefaultColumn ) ,
id_well = table . Column < int > ( type : "integer" , nullable : false , comment : "id скважины" ) ,
id_file = table . Column < int > ( type : "integer" , nullable : false , comment : "id файла-родителя" ) ,
begin = table . Column < DateTimeOffset > ( type : "timestamp with time zone" , nullable : false ) ,
end = table . Column < DateTimeOffset > ( type : "timestamp with time zone" , nullable : false , comment : "timestamp with time zone" ) ,
step = table . Column < int > ( type : "integer" , nullable : false , comment : "размер шага в секундах" ) ,
format = table . Column < int > ( type : "integer" , nullable : false , comment : "Формат отчета" )
} ,
constraints : table = >
{
table . PrimaryKey ( "PK_t_report_property" , x = > x . id ) ;
table . ForeignKey (
name : "FK_t_report_property_t_file_info_id_file" ,
column : x = > x . id_file ,
principalTable : "t_file_info" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
table . ForeignKey (
name : "FK_t_report_property_t_well_id_well" ,
column : x = > x . id_well ,
principalTable : "t_well" ,
principalColumn : "id" ,
onDelete : ReferentialAction . Cascade ) ;
} ,
comment : "Отчеты с данными по буровым" ) ;
migrationBuilder . InsertData (
table : "t_company_type" ,
columns : new [ ] { "id" , "caption" } ,
values : new object [ , ]
{
{ 1 , "Недрапользователь" } ,
{ 2 , "Буровой подрядчик" } ,
{ 3 , "Сервис автоматизации бурения" }
} ) ;
migrationBuilder . InsertData (
table : "t_file_category" ,
columns : new [ ] { "id" , "name" , "short_name" } ,
values : new object [ , ]
{
{ 13 , "Программа бурения, части" , "ПБч" } ,
{ 12 , "Рапорт" , "report" } ,
{ 11 , "Последние данные ННБ" , "nnbLastData" } ,
{ 10 , "Последние данные Шламограммы" , "mudLastData" } ,
{ 9 , "Последний замер бурового раствора ФАКТ" , "fluidFactLastData" } ,
{ 8 , "Последний замер бурового раствора ПЛАН" , "fluidPlanLastData" } ,
{ 6 , "Супервайзер" , "supervisor" } ,
{ 14 , "Программа бурения" , "ПБ" } ,
{ 5 , "Документы по скважине" , "wellDocuments" } ,
{ 4 , "ГТИ" , "gti" } ,
{ 3 , "ННБ" , "nnb" } ,
{ 2 , "Цементирование" , "cement" } ,
{ 1 , "Растворный сервис" , "fluidService" } ,
{ 7 , "Мастер" , "master" }
} ) ;
migrationBuilder . InsertData (
table : "t_measure_category" ,
columns : new [ ] { "id" , "name" , "short_name" } ,
values : new object [ , ]
{
{ 3 , "ННБ" , "ННБ" } ,
{ 2 , "Шламограмма" , "Шламограмма" } ,
{ 1 , "Показатели бурового раствора" , "Раствор" }
} ) ;
migrationBuilder . InsertData (
table : "t_user_role" ,
columns : new [ ] { "id" , "caption" } ,
values : new object [ , ]
{
{ 1 , "Администратор" } ,
{ 2 , "Пользователь" }
} ) ;
migrationBuilder . InsertData (
table : "t_well_operation_category" ,
columns : new [ ] { "id" , "code" , "name" } ,
values : new object [ , ]
{
{ 1031 , 0 , "Ремонт" } ,
{ 1030 , 0 , "Разбуривание тех.оснастки" } ,
{ 1029 , 0 , "Прокачка пачек" } ,
{ 1028 , 0 , "Промежуточная промывка" } ,
{ 1027 , 0 , "Промывка" } ,
{ 1026 , 0 , "Разборка КНБК" } ,
{ 1024 , 0 , "Подготовительные работы" } ,
{ 1032 , 0 , "Спуск инструмента" } ,
{ 1023 , 0 , "Сборка инструмента" } ,
{ 1022 , 0 , "Обратная проработка" } ,
{ 1021 , 0 , "Подъем инструмента с промывкой" } ,
{ 1020 , 0 , "Подъем инструмента" } ,
{ 1019 , 0 , "Перетяжка тальканата" } ,
{ 1025 , 0 , "Сборка КНБК" } ,
{ 1033 , 0 , "Спуск инструмента с промывкой" } ,
{ 1044 , 0 , "В М Р " } ,
{ 1035 , 0 , "Принудительная проработка" } ,
{ 1036 , 0 , "Спуск обсадной колонны" } ,
{ 1037 , 0 , "Т е х СПО-подъем" } ,
{ 1038 , 0 , "Т е х СПО-спуск" } ,
{ 1039 , 0 , "Техническое обслуживание" } ,
{ 1040 , 0 , "Цементаж" } ,
{ 1041 , 0 , "Шаблонировка ствола" } ,
{ 1042 , 0 , "Геологическое осложнение" } ,
{ 1043 , 0 , "НПВ" } ,
{ 1018 , 0 , "Перетяжка талевого каната" } ,
{ 1045 , 0 , "Прочее" } ,
{ 1046 , 0 , "Спуск КНБК" } ,
{ 1047 , 0 , "Подъем КНБК" } ,
{ 1048 , 0 , "Спуск О К " } ,
{ 1034 , 0 , "Прямая проработка" } ,
{ 1017 , 0 , "Перезапись каротажа" } ,
{ 1009 , 0 , "Оборудование устья" } ,
{ 1015 , 0 , "Опрессовка ВЗД" } ,
{ 1 , 0 , "Невозможно определить операцию" } ,
{ 2 , 0 , "Роторное бурение" } ,
{ 3 , 0 , "Слайдирование" } ,
{ 4 , 0 , "Подъем с проработкой" } ,
{ 5 , 0 , "Спуск с проработкой" } ,
{ 6 , 0 , "Подъем с промывкой" } ,
{ 7 , 0 , "Спуск с промывкой" } ,
{ 8 , 0 , "Спуск в скважину" } ,
{ 9 , 0 , "Спуск с вращением" } ,
{ 10 , 0 , "Подъем из скважины" } ,
{ 11 , 0 , "Подъем с вращением" } ,
{ 12 , 0 , "Промывка в покое" } ,
{ 1016 , 0 , "Перевод скв на другой тип промывочной жидкости" } ,
{ 14 , 0 , "Удержание в клиньях" } ,
{ 15 , 0 , "Неподвижное состояние" } ,
{ 13 , 0 , "Промывка с вращением" } ,
{ 17 , 0 , "Н а поверхности" } ,
{ 1014 , 0 , "Опресовка Ц.К ." } ,
{ 1013 , 0 , "Опрессовка ПВО" } ,
{ 1012 , 0 , "Окончание цикла строительства скважины" } ,
{ 16 , 0 , "Вращение без циркуляции" } ,
{ 1010 , 0 , "ОЗЦ" } ,
{ 1008 , 0 , "ОЗЦ" } ,
{ 1011 , 0 , "Начало цикла строительства скважины" } ,
{ 1006 , 0 , "Установка ФА" } ,
{ 1005 , 0 , "Демонтаж ПВО" } ,
{ 1004 , 0 , "Монтаж ПВО" } ,
{ 1003 , 0 , "ГФР" } ,
{ 1002 , 0 , "ГИС" } ,
{ 1001 , 0 , "Бурение в интервале" } ,
{ 1007 , 0 , "Оборудование устья" }
} ) ;
migrationBuilder . InsertData (
table : "t_well_section_type" ,
columns : new [ ] { "id" , "caption" } ,
values : new object [ , ]
{
{ 1 , "Пилотный ствол" } ,
{ 2 , "Направление" } ,
{ 3 , "Кондуктор" } ,
{ 4 , "Эксплуатационная колонна" } ,
{ 5 , "Транспортный ствол" } ,
{ 6 , "Хвостовик" }
} ) ;
migrationBuilder . InsertData (
table : "t_well_type" ,
columns : new [ ] { "id" , "caption" } ,
values : new object [ , ]
{
{ 1 , "Наклонно-направленная" } ,
{ 2 , "Горизонтальная" }
} ) ;
migrationBuilder . InsertData (
table : "t_company" ,
columns : new [ ] { "id" , "caption" , "id_company_type" } ,
values : new object [ ] { 1 , "О О О \"АСБ\"" , 3 } ) ;
migrationBuilder . InsertData (
table : "t_user" ,
columns : new [ ] { "id" , "id_company" , "id_role" , "level" , "login" , "name" , "password_hash" , "patronymic" , "state" , "surname" } ,
values : new object [ ] { 1 , 1 , 1 , 2147483647 , "dev" , "Разработчик" , "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" , null , null , null } ) ;
migrationBuilder . CreateIndex (
name : "IX_t_cluster_id_deposit" ,
table : "t_cluster" ,
column : "id_deposit" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_company_id_company_type" ,
table : "t_company" ,
column : "id_company_type" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_data_saub_base_id_telemetry" ,
table : "t_data_saub_base" ,
column : "id_telemetry" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_file_info_id_author" ,
table : "t_file_info" ,
column : "id_author" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_file_info_id_category" ,
table : "t_file_info" ,
column : "id_category" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_file_info_id_well" ,
table : "t_file_info" ,
column : "id_well" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_measure_id_category" ,
table : "t_measure" ,
column : "id_category" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_measure_id_well" ,
table : "t_measure" ,
column : "id_well" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_relation_company_well_id_well" ,
table : "t_relation_company_well" ,
column : "id_well" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_report_property_id_file" ,
table : "t_report_property" ,
column : "id_file" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_report_property_id_well" ,
table : "t_report_property" ,
column : "id_well" ) ;
migrationBuilder . CreateIndex (
name : "t_telemetry_remote_uid_index" ,
table : "t_telemetry" ,
column : "remote_uid" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_telemetry_analysis_id_operation" ,
table : "t_telemetry_analysis" ,
column : "id_operation" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_telemetry_analysis_id_telemetry" ,
table : "t_telemetry_analysis" ,
column : "id_telemetry" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_telemetry_message_id_telemetry" ,
table : "t_telemetry_message" ,
column : "id_telemetry" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_user_id_company" ,
table : "t_user" ,
column : "id_company" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_user_id_role" ,
table : "t_user" ,
column : "id_role" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_user_login" ,
table : "t_user" ,
column : "login" ,
unique : true ) ;
migrationBuilder . CreateIndex (
name : "IX_t_well_id_cluster" ,
table : "t_well" ,
column : "id_cluster" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_well_id_telemetry" ,
table : "t_well" ,
column : "id_telemetry" ,
unique : true ) ;
migrationBuilder . CreateIndex (
name : "IX_t_well_id_well_type" ,
table : "t_well" ,
column : "id_well_type" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_well_operation_date" ,
table : "t_well_operation" ,
column : "date" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_well_operation_depth" ,
table : "t_well_operation" ,
column : "depth" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_well_operation_id_category" ,
table : "t_well_operation" ,
column : "id_category" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_well_operation_id_well" ,
table : "t_well_operation" ,
column : "id_well" ) ;
migrationBuilder . CreateIndex (
name : "IX_t_well_operation_id_well_section_type" ,
table : "t_well_operation" ,
column : "id_well_section_type" ) ;
}
protected override void Down ( MigrationBuilder migrationBuilder )
{
migrationBuilder . DropTable (
name : "t_data_saub_base" ) ;
migrationBuilder . DropTable (
name : "t_measure" ) ;
migrationBuilder . DropTable (
name : "t_relation_company_well" ) ;
migrationBuilder . DropTable (
name : "t_report_property" ) ;
migrationBuilder . DropTable (
name : "t_telemetry_analysis" ) ;
migrationBuilder . DropTable (
name : "t_telemetry_event" ) ;
migrationBuilder . DropTable (
name : "t_telemetry_message" ) ;
migrationBuilder . DropTable (
name : "t_telemetry_user" ) ;
migrationBuilder . DropTable (
name : "t_well_operation" ) ;
migrationBuilder . DropTable (
name : "t_measure_category" ) ;
migrationBuilder . DropTable (
name : "t_file_info" ) ;
migrationBuilder . DropTable (
name : "t_well_operation_category" ) ;
migrationBuilder . DropTable (
name : "t_well_section_type" ) ;
migrationBuilder . DropTable (
name : "t_file_category" ) ;
migrationBuilder . DropTable (
name : "t_user" ) ;
migrationBuilder . DropTable (
name : "t_well" ) ;
migrationBuilder . DropTable (
name : "t_user_role" ) ;
migrationBuilder . DropTable (
name : "t_company" ) ;
migrationBuilder . DropTable (
name : "t_well_type" ) ;
migrationBuilder . DropTable (
name : "t_cluster" ) ;
migrationBuilder . DropTable (
name : "t_telemetry" ) ;
migrationBuilder . DropTable (
name : "t_company_type" ) ;
migrationBuilder . DropTable (
name : "t_deposit" ) ;
}
}
}