using System; using System.Text.Json; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace DD.Persistence.Database.Postgres.Migrations { /// public partial class Init : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "change_log", columns: table => new { Id = table.Column(type: "uuid", nullable: false, comment: "Ключ записи"), IdDiscriminator = table.Column(type: "uuid", nullable: false, comment: "Дискриминатор таблицы"), IdAuthor = table.Column(type: "uuid", nullable: false, comment: "Автор изменения"), IdEditor = table.Column(type: "uuid", nullable: true, comment: "Редактор"), Creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "Дата создания записи"), Obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "Дата устаревания (например при удалении)"), IdNext = table.Column(type: "uuid", nullable: true, comment: "Id заменяющей записи"), DepthStart = table.Column(type: "double precision", nullable: false, comment: "Глубина забоя на дату начала интервала"), DepthEnd = table.Column(type: "double precision", nullable: false, comment: "Глубина забоя на дату окончания интервала"), IdSection = table.Column(type: "uuid", nullable: false, comment: "Ключ секции"), Value = table.Column(type: "jsonb", nullable: false, comment: "Значение") }, constraints: table => { table.PrimaryKey("PK_change_log", x => x.Id); }); migrationBuilder.CreateTable( name: "data_scheme", columns: table => new { DiscriminatorId = table.Column(type: "uuid", nullable: false, comment: "Идентификатор схемы данных"), PropNames = table.Column(type: "jsonb", nullable: false, comment: "Наименования полей в порядке индексации") }, constraints: table => { table.PrimaryKey("PK_data_scheme", x => x.DiscriminatorId); }); migrationBuilder.CreateTable( name: "data_source_system", columns: table => new { SystemId = table.Column(type: "uuid", nullable: false, comment: "Id системы - источника данных"), Name = table.Column(type: "varchar(256)", nullable: false, comment: "Наименование системы - источника данных"), Description = table.Column(type: "text", nullable: true, comment: "Описание системы - источника данных") }, constraints: table => { table.PrimaryKey("PK_data_source_system", x => x.SystemId); }); migrationBuilder.CreateTable( name: "parameter_data", columns: table => new { DiscriminatorId = table.Column(type: "uuid", nullable: false, comment: "Дискриминатор системы"), ParameterId = table.Column(type: "integer", nullable: false, comment: "Id параметра"), Timestamp = table.Column(type: "timestamp with time zone", nullable: false, comment: "Временная отметка"), Value = table.Column(type: "varchar(256)", nullable: false, comment: "Значение параметра в виде строки") }, constraints: table => { table.PrimaryKey("PK_parameter_data", x => new { x.DiscriminatorId, x.ParameterId, x.Timestamp }); }); migrationBuilder.CreateTable( name: "setpoint", columns: table => new { Key = table.Column(type: "uuid", nullable: false, comment: "Ключ"), Timestamp = table.Column(type: "timestamp with time zone", nullable: false, comment: "Дата создания уставки"), Value = table.Column(type: "jsonb", nullable: false, comment: "Значение уставки"), IdUser = table.Column(type: "uuid", nullable: false, comment: "Id автора последнего изменения") }, constraints: table => { table.PrimaryKey("PK_setpoint", x => new { x.Key, x.Timestamp }); }); migrationBuilder.CreateTable( name: "timestamped_values", columns: table => new { Timestamp = table.Column(type: "timestamp with time zone", nullable: false, comment: "Временная отметка"), DiscriminatorId = table.Column(type: "uuid", nullable: false, comment: "Дискриминатор системы"), Values = table.Column(type: "jsonb", nullable: false, comment: "Данные") }, constraints: table => { table.PrimaryKey("PK_timestamped_values", x => new { x.DiscriminatorId, x.Timestamp }); table.ForeignKey( name: "FK_timestamped_values_data_scheme_DiscriminatorId", column: x => x.DiscriminatorId, principalTable: "data_scheme", principalColumn: "DiscriminatorId", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "tech_message", columns: table => new { EventId = table.Column(type: "uuid", nullable: false, comment: "Id события"), CategoryId = table.Column(type: "integer", nullable: false, comment: "Id Категории важности"), Timestamp = table.Column(type: "timestamp with time zone", nullable: false, comment: "Дата возникновения"), Text = table.Column(type: "varchar(512)", nullable: false, comment: "Текст сообщения"), SystemId = table.Column(type: "uuid", nullable: false, comment: "Id системы, к которой относится сообщение"), EventState = table.Column(type: "integer", nullable: false, comment: "Статус события") }, constraints: table => { table.PrimaryKey("PK_tech_message", x => x.EventId); table.ForeignKey( name: "FK_tech_message_data_source_system_SystemId", column: x => x.SystemId, principalTable: "data_source_system", principalColumn: "SystemId", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateIndex( name: "IX_tech_message_SystemId", table: "tech_message", column: "SystemId"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "change_log"); migrationBuilder.DropTable( name: "parameter_data"); migrationBuilder.DropTable( name: "setpoint"); migrationBuilder.DropTable( name: "tech_message"); migrationBuilder.DropTable( name: "timestamped_values"); migrationBuilder.DropTable( name: "data_source_system"); migrationBuilder.DropTable( name: "data_scheme"); } } }