work migration (timescale)

This commit is contained in:
eugeniy_ivanov 2023-04-07 17:58:46 +05:00
parent 8e663e7bef
commit 2e58dea88a
6 changed files with 66 additions and 41 deletions

View File

@ -34,8 +34,6 @@ namespace AsbCloudApp.Repositories
Task<IEnumerable<WitsRecordDto>> GetAsync(int idWell, Task<IEnumerable<WitsRecordDto>> GetAsync(int idWell,
DateTime dateBegin = default, double intervalSec = 600d, DateTime dateBegin = default, double intervalSec = 600d,
int approxPointsCount = 1024, CancellationToken token = default); int approxPointsCount = 1024, CancellationToken token = default);
} }
#nullable disable #nullable disable
} }

View File

@ -13,8 +13,8 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
namespace AsbCloudDb.Migrations namespace AsbCloudDb.Migrations
{ {
[DbContext(typeof(AsbCloudDbContext))] [DbContext(typeof(AsbCloudDbContext))]
[Migration("20230331060526_add_table_WITS_GTR_and_manual_hypertable")] [Migration("20230407125505_add_table_wits_and_manual_hypertable")]
partial class add_table_WITS_GTR_and_manual_hypertable partial class add_table_wits_and_manual_hypertable
{ {
protected override void BuildTargetModel(ModelBuilder modelBuilder) protected override void BuildTargetModel(ModelBuilder modelBuilder)
{ {
@ -150,8 +150,8 @@ namespace AsbCloudDb.Migrations
.HasColumnName("id_well") .HasColumnName("id_well")
.HasComment("ID скважины"); .HasComment("ID скважины");
b.Property<DateTimeOffset>("StartDate") b.Property<DateOnly>("StartDate")
.HasColumnType("timestamp with time zone") .HasColumnType("date")
.HasColumnName("start_date") .HasColumnName("start_date")
.HasComment("Дата отчёта"); .HasComment("Дата отчёта");
@ -803,7 +803,7 @@ namespace AsbCloudDb.Migrations
b.HasComment("Действия с файлами."); b.HasComment("Действия с файлами.");
}); });
modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsFloat", b => modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b =>
{ {
b.Property<int>("IdTelemetry") b.Property<int>("IdTelemetry")
.HasColumnType("integer") .HasColumnType("integer")
@ -825,14 +825,14 @@ namespace AsbCloudDb.Migrations
.HasColumnType("real") .HasColumnType("real")
.HasColumnName("Value"); .HasColumnName("Value");
b.HasKey("IdTelemetry", "IdRecord", "IdItem"); b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
b.ToTable("t_wits_float"); b.ToTable("t_wits_float");
b.HasComment("таблица данных ГТИ с типом значения float"); b.HasComment("таблица данных ГТИ с типом значения ");
}); });
modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsInt", b => modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b =>
{ {
b.Property<int>("IdTelemetry") b.Property<int>("IdTelemetry")
.HasColumnType("integer") .HasColumnType("integer")
@ -854,14 +854,14 @@ namespace AsbCloudDb.Migrations
.HasColumnType("integer") .HasColumnType("integer")
.HasColumnName("Value"); .HasColumnName("Value");
b.HasKey("IdTelemetry", "IdRecord", "IdItem"); b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
b.ToTable("t_wits_int"); b.ToTable("t_wits_int");
b.HasComment("таблица данных ГТИ с типом значения int16 int32"); b.HasComment("таблица данных ГТИ с типом значения int16 int32");
}); });
modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsStr", b => modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b =>
{ {
b.Property<int>("IdTelemetry") b.Property<int>("IdTelemetry")
.HasColumnType("integer") .HasColumnType("integer")
@ -880,10 +880,11 @@ namespace AsbCloudDb.Migrations
.HasColumnName("date"); .HasColumnName("date");
b.Property<string>("Value") b.Property<string>("Value")
.IsRequired()
.HasColumnType("text") .HasColumnType("text")
.HasColumnName("Value"); .HasColumnName("Value");
b.HasKey("IdTelemetry", "IdRecord", "IdItem"); b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
b.ToTable("t_wits_string"); b.ToTable("t_wits_string");
@ -7232,7 +7233,7 @@ namespace AsbCloudDb.Migrations
b.Navigation("User"); b.Navigation("User");
}); });
modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsFloat", b => modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b =>
{ {
b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
.WithMany() .WithMany()
@ -7243,7 +7244,7 @@ namespace AsbCloudDb.Migrations
b.Navigation("Telemetry"); b.Navigation("Telemetry");
}); });
modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsInt", b => modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b =>
{ {
b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
.WithMany() .WithMany()
@ -7254,7 +7255,7 @@ namespace AsbCloudDb.Migrations
b.Navigation("Telemetry"); b.Navigation("Telemetry");
}); });
modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsStr", b => modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b =>
{ {
b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
.WithMany() .WithMany()

View File

@ -5,10 +5,20 @@ using Microsoft.EntityFrameworkCore.Migrations;
namespace AsbCloudDb.Migrations namespace AsbCloudDb.Migrations
{ {
public partial class add_table_WITS_GTR_and_manual_hypertable : Migration public partial class add_table_wits_and_manual_hypertable : Migration
{ {
protected override void Up(MigrationBuilder migrationBuilder) protected override void Up(MigrationBuilder migrationBuilder)
{ {
migrationBuilder.AlterColumn<DateOnly>(
name: "start_date",
table: "t_daily_report",
type: "date",
nullable: false,
comment: "Дата отчёта",
oldClrType: typeof(DateTimeOffset),
oldType: "timestamp with time zone",
oldComment: "Дата отчёта");
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "t_wits_float", name: "t_wits_float",
columns: table => new columns: table => new
@ -21,7 +31,7 @@ namespace AsbCloudDb.Migrations
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("PK_t_wits_float", x => new { x.id_telemetry, x.id_record, x.id_item }); table.PrimaryKey("PK_t_wits_float", x => new { x.id_telemetry, x.id_record, x.id_item, x.date });
table.ForeignKey( table.ForeignKey(
name: "FK_t_wits_float_t_telemetry_id_telemetry", name: "FK_t_wits_float_t_telemetry_id_telemetry",
column: x => x.id_telemetry, column: x => x.id_telemetry,
@ -29,7 +39,7 @@ namespace AsbCloudDb.Migrations
principalColumn: "id", principalColumn: "id",
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}, },
comment: "таблица данных ГТИ с типом значения float"); comment: "таблица данных ГТИ с типом значения ");
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "t_wits_int", name: "t_wits_int",
@ -43,7 +53,7 @@ namespace AsbCloudDb.Migrations
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("PK_t_wits_int", x => new { x.id_telemetry, x.id_record, x.id_item }); table.PrimaryKey("PK_t_wits_int", x => new { x.id_telemetry, x.id_record, x.id_item, x.date });
table.ForeignKey( table.ForeignKey(
name: "FK_t_wits_int_t_telemetry_id_telemetry", name: "FK_t_wits_int_t_telemetry_id_telemetry",
column: x => x.id_telemetry, column: x => x.id_telemetry,
@ -61,11 +71,11 @@ namespace AsbCloudDb.Migrations
id_record = table.Column<int>(type: "integer", nullable: false), id_record = table.Column<int>(type: "integer", nullable: false),
id_item = table.Column<int>(type: "integer", nullable: false), id_item = table.Column<int>(type: "integer", nullable: false),
date = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: false), date = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: false),
Value = table.Column<string>(type: "text", nullable: true) Value = table.Column<string>(type: "text", nullable: false)
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("PK_t_wits_string", x => new { x.id_telemetry, x.id_record, x.id_item }); table.PrimaryKey("PK_t_wits_string", x => new { x.id_telemetry, x.id_record, x.id_item, x.date });
table.ForeignKey( table.ForeignKey(
name: "FK_t_wits_string_t_telemetry_id_telemetry", name: "FK_t_wits_string_t_telemetry_id_telemetry",
column: x => x.id_telemetry, column: x => x.id_telemetry,
@ -74,10 +84,12 @@ namespace AsbCloudDb.Migrations
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}, },
comment: "таблица данных ГТИ с типом значения string"); comment: "таблица данных ГТИ с типом значения string");
//migrationBuilder.Sql
// ("SELECT create_hypertable('t_wits_string','date','id_telemetry', 2, chunk_time_interval => INTERVAL '5 day'); " + migrationBuilder.Sql
// "SELECT create_hypertable('t_wits_float','date','id_telemetry', 2, chunk_time_interval => INTERVAL '5 day'); " + ("SELECT create_hypertable('t_wits_string','date','id_telemetry', 2, chunk_time_interval => INTERVAL '5 day'); " +
// "SELECT create_hypertable('t_wits_int','date','id_telemetry', 2, chunk_time_interval => INTERVAL '5 day'); "); "SELECT create_hypertable('t_wits_float','date','id_telemetry', 2, chunk_time_interval => INTERVAL '5 day'); " +
"SELECT create_hypertable('t_wits_int','date','id_telemetry', 2, chunk_time_interval => INTERVAL '5 day'); ");
} }
protected override void Down(MigrationBuilder migrationBuilder) protected override void Down(MigrationBuilder migrationBuilder)
@ -90,6 +102,16 @@ namespace AsbCloudDb.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "t_wits_string"); name: "t_wits_string");
migrationBuilder.AlterColumn<DateTimeOffset>(
name: "start_date",
table: "t_daily_report",
type: "timestamp with time zone",
nullable: false,
comment: "Дата отчёта",
oldClrType: typeof(DateOnly),
oldType: "date",
oldComment: "Дата отчёта");
} }
} }
} }

View File

@ -801,7 +801,7 @@ namespace AsbCloudDb.Migrations
b.HasComment("Действия с файлами."); b.HasComment("Действия с файлами.");
}); });
modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsFloat", b => modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b =>
{ {
b.Property<int>("IdTelemetry") b.Property<int>("IdTelemetry")
.HasColumnType("integer") .HasColumnType("integer")
@ -823,14 +823,14 @@ namespace AsbCloudDb.Migrations
.HasColumnType("real") .HasColumnType("real")
.HasColumnName("Value"); .HasColumnName("Value");
b.HasKey("IdTelemetry", "IdRecord", "IdItem"); b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
b.ToTable("t_wits_float"); b.ToTable("t_wits_float");
b.HasComment("таблица данных ГТИ с типом значения float"); b.HasComment("таблица данных ГТИ с типом значения ");
}); });
modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsInt", b => modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b =>
{ {
b.Property<int>("IdTelemetry") b.Property<int>("IdTelemetry")
.HasColumnType("integer") .HasColumnType("integer")
@ -852,14 +852,14 @@ namespace AsbCloudDb.Migrations
.HasColumnType("integer") .HasColumnType("integer")
.HasColumnName("Value"); .HasColumnName("Value");
b.HasKey("IdTelemetry", "IdRecord", "IdItem"); b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
b.ToTable("t_wits_int"); b.ToTable("t_wits_int");
b.HasComment("таблица данных ГТИ с типом значения int16 int32"); b.HasComment("таблица данных ГТИ с типом значения int16 int32");
}); });
modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsStr", b => modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b =>
{ {
b.Property<int>("IdTelemetry") b.Property<int>("IdTelemetry")
.HasColumnType("integer") .HasColumnType("integer")
@ -878,10 +878,11 @@ namespace AsbCloudDb.Migrations
.HasColumnName("date"); .HasColumnName("date");
b.Property<string>("Value") b.Property<string>("Value")
.IsRequired()
.HasColumnType("text") .HasColumnType("text")
.HasColumnName("Value"); .HasColumnName("Value");
b.HasKey("IdTelemetry", "IdRecord", "IdItem"); b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
b.ToTable("t_wits_string"); b.ToTable("t_wits_string");
@ -7230,7 +7231,7 @@ namespace AsbCloudDb.Migrations
b.Navigation("User"); b.Navigation("User");
}); });
modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsFloat", b => modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b =>
{ {
b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
.WithMany() .WithMany()
@ -7241,7 +7242,7 @@ namespace AsbCloudDb.Migrations
b.Navigation("Telemetry"); b.Navigation("Telemetry");
}); });
modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsInt", b => modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b =>
{ {
b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
.WithMany() .WithMany()
@ -7252,7 +7253,7 @@ namespace AsbCloudDb.Migrations
b.Navigation("Telemetry"); b.Navigation("Telemetry");
}); });
modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsStr", b => modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b =>
{ {
b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
.WithMany() .WithMany()

View File

@ -345,21 +345,24 @@ namespace AsbCloudDb.Model
entity.HasKey( entity.HasKey(
nameof(ITelemetryData.IdTelemetry), nameof(ITelemetryData.IdTelemetry),
nameof(WitsItemBase<float>.IdRecord), nameof(WitsItemBase<float>.IdRecord),
nameof(WitsItemBase<float>.IdItem)); nameof(WitsItemBase<float>.IdItem),
}); nameof(WitsItemBase<float>.DateTime));
});
modelBuilder.Entity<WitsItemInt>(entity => modelBuilder.Entity<WitsItemInt>(entity =>
{ {
entity.HasKey( entity.HasKey(
nameof(ITelemetryData.IdTelemetry), nameof(ITelemetryData.IdTelemetry),
nameof(WitsItemBase<int>.IdRecord), nameof(WitsItemBase<int>.IdRecord),
nameof(WitsItemBase<int>.IdItem)); nameof(WitsItemBase<int>.IdItem),
nameof(WitsItemBase<int>.DateTime));
}); });
modelBuilder.Entity<WitsItemString>(entity => modelBuilder.Entity<WitsItemString>(entity =>
{ {
entity.HasKey( entity.HasKey(
nameof(ITelemetryData.IdTelemetry), nameof(ITelemetryData.IdTelemetry),
nameof(WitsItemBase<string>.IdRecord), nameof(WitsItemBase<string>.IdRecord),
nameof(WitsItemBase<string>.IdItem)); nameof(WitsItemBase<string>.IdItem),
nameof(WitsItemBase<string>.DateTime));
}); });

View File

@ -19,7 +19,7 @@ namespace AsbCloudDb.Model.GTR
public DateTimeOffset DateTime { get; set; } public DateTimeOffset DateTime { get; set; }
[Column("Value")] [Column("Value")]
public T? Value { get; set; } public T Value { get; set; }
[ForeignKey(nameof(IdTelemetry))] [ForeignKey(nameof(IdTelemetry))]
public virtual Telemetry? Telemetry { get; set; } public virtual Telemetry? Telemetry { get; set; }