Enable nullable on Telemetry*

This commit is contained in:
ngfrolov 2023-02-20 15:06:26 +05:00
parent 02a8db1a58
commit 09d0d42688
Signed by: ng.frolov
GPG Key ID: E99907A0357B29A7
15 changed files with 7217 additions and 81 deletions

View File

@ -1,5 +1,6 @@
namespace AsbCloudApp.Data.SAUB
{
#nullable enable
/// <summary>
/// Описание шаблона события панели оператора
/// </summary>
@ -13,7 +14,7 @@
/// <summary>
/// шаблон текста сообщения
/// </summary>
public string Message { get; set; }
public string Message { get; set; } = string.Empty;
/// <summary>
/// id категории события
@ -23,7 +24,7 @@
/// <summary>
/// переменная сервера обмена информацией с полевым оборудованием
/// </summary>
public string Tag { get; set; }
public string Tag { get; set; } = string.Empty;
/// <summary>
/// тип определения наступления события

View File

@ -1,5 +1,5 @@
using System;
#nullable enable
namespace AsbCloudApp.Data.SAUB
{
/// <summary>
@ -42,7 +42,7 @@ namespace AsbCloudApp.Data.SAUB
/// <summary>
/// telemetry user
/// </summary>
public string User { get; set; }
public string? User { get; set; }
/// <summary>
/// Глубина забоя

View File

@ -2,6 +2,7 @@
namespace AsbCloudApp.Data.SAUB
{
#nullable enable
/// <summary>
/// общая информация о панели оператора
/// </summary>
@ -15,7 +16,7 @@ namespace AsbCloudApp.Data.SAUB
/// <summary>
/// идентификатор временной зоны
/// </summary>
public string TimeZoneId { get; set; }
public string? TimeZoneId { get; set; }
/// <summary>
/// смещение в часах относительно UTC
@ -25,41 +26,41 @@ namespace AsbCloudApp.Data.SAUB
/// <summary>
/// название скважины
/// </summary>
public string Well { get; set; }
public string Well { get; set; } = string.Empty;
/// <summary>
/// название куста
/// </summary>
public string Cluster { get; set; }
public string Cluster { get; set; } = string.Empty;
/// <summary>
/// название месторождения
/// </summary>
public string Deposit { get; set; } = string.Empty;
/// <summary>
/// название заказчика
/// </summary>
public string Customer { get; set; }
public string? Customer { get; set; }
/// <summary>
/// название месторождения
/// </summary>
public string Deposit { get; set; }
/// <summary>
/// версия ПО панели оператора
/// </summary>
public string HmiVersion { get; set; }
public string? HmiVersion { get; set; }
/// <summary>
/// версия ПО ПЛК САУБ
/// </summary>
public string SaubPlcVersion { get; set; }
public string? SaubPlcVersion { get; set; }
/// <summary>
/// версия ПО ПЛК Спин мастер
/// </summary>
public string SpinPlcVersion { get; set; }
public string? SpinPlcVersion { get; set; }
/// <summary>
/// комментарий
/// </summary>
public string Comment { get; set; }
public string? Comment { get; set; }
}
}

View File

@ -2,6 +2,7 @@
namespace AsbCloudApp.Data.SAUB
{
#nullable enable
/// <summary>
/// Сообщение получаемое от телеметрии с буровой
/// </summary>
@ -35,21 +36,21 @@ namespace AsbCloudApp.Data.SAUB
/// <summary>
/// аргумент №0 для подстановки в шаблон сообщения
/// </summary>
public string Arg0 { get; set; }
public string? Arg0 { get; set; }
/// <summary>
/// аргумент №1 для подстановки в шаблон сообщения
/// </summary>
public string Arg1 { get; set; }
public string? Arg1 { get; set; }
/// <summary>
/// аргумент №2 для подстановки в шаблон сообщения
/// </summary>
public string Arg2 { get; set; }
public string? Arg2 { get; set; }
/// <summary>
/// аргумент №3 для подстановки в шаблон сообщения
/// </summary>
public string Arg3 { get; set; }
public string? Arg3 { get; set; }
}
}

View File

@ -1,5 +1,6 @@
namespace AsbCloudApp.Data.SAUB
{
#nullable enable
/// <summary>
/// Пользователь панели оператора
/// </summary>
@ -11,22 +12,22 @@
/// <summary>
/// Имя
/// </summary>
public string Name { get; set; }
public string? Name { get; set; }
/// <summary>
/// Фамилия
/// </summary>
public string Surname { get; set; }
public string Surname { get; set; } = null!;
/// <summary>
/// Отчество
/// </summary>
public string Patronymic { get; set; }
public string? Patronymic { get; set; }
/// <summary>
/// Уровень доступа
/// </summary>
public int Level { get; set; }
public int? Level { get; set; }
/// <summary>
/// Собрать отображаемое имя пользователя

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,124 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace AsbCloudDb.Migrations
{
public partial class Enable_nullable_on_telemetry_ : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql("update t_telemetry set timezone = '{\"Hours\": 5}' where timezone is null;");
migrationBuilder.Sql("update t_telemetry set info = '{}' where info is null;");
migrationBuilder.AlterColumn<string>(
name: "surname",
table: "t_telemetry_user",
type: "character varying(255)",
maxLength: 255,
nullable: false,
defaultValue: "",
oldClrType: typeof(string),
oldType: "character varying(255)",
oldMaxLength: 255,
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "message_template",
table: "t_telemetry_event",
type: "text",
nullable: false,
defaultValue: "",
oldClrType: typeof(string),
oldType: "text",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "timezone",
table: "t_telemetry",
type: "jsonb",
nullable: false,
defaultValue: "{\"Hours\": 5}",
comment: "Смещение часового пояса от UTC",
oldClrType: typeof(string),
oldType: "jsonb",
oldNullable: true,
oldComment: "Смещение часового пояса от UTC");
migrationBuilder.AlterColumn<string>(
name: "remote_uid",
table: "t_telemetry",
type: "text",
nullable: false,
defaultValue: "",
comment: "Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв.",
oldClrType: typeof(string),
oldType: "text",
oldNullable: true,
oldComment: "Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв.");
migrationBuilder.AlterColumn<string>(
name: "info",
table: "t_telemetry",
type: "jsonb",
nullable: false,
defaultValue: "{}",
comment: "Информация с панели о скважине",
oldClrType: typeof(string),
oldType: "jsonb",
oldNullable: true,
oldComment: "Информация с панели о скважине");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "surname",
table: "t_telemetry_user",
type: "character varying(255)",
maxLength: 255,
nullable: true,
oldClrType: typeof(string),
oldType: "character varying(255)",
oldMaxLength: 255);
migrationBuilder.AlterColumn<string>(
name: "message_template",
table: "t_telemetry_event",
type: "text",
nullable: true,
oldClrType: typeof(string),
oldType: "text");
migrationBuilder.AlterColumn<string>(
name: "timezone",
table: "t_telemetry",
type: "jsonb",
nullable: true,
comment: "Смещение часового пояса от UTC",
oldClrType: typeof(string),
oldType: "jsonb",
oldComment: "Смещение часового пояса от UTC");
migrationBuilder.AlterColumn<string>(
name: "remote_uid",
table: "t_telemetry",
type: "text",
nullable: true,
comment: "Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв.",
oldClrType: typeof(string),
oldType: "text",
oldComment: "Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв.");
migrationBuilder.AlterColumn<string>(
name: "info",
table: "t_telemetry",
type: "jsonb",
nullable: true,
comment: "Информация с панели о скважине",
oldClrType: typeof(string),
oldType: "jsonb",
oldComment: "Информация с панели о скважине");
}
}
}

View File

@ -3300,16 +3300,19 @@ namespace AsbCloudDb.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Info")
.IsRequired()
.HasColumnType("jsonb")
.HasColumnName("info")
.HasComment("Информация с панели о скважине");
b.Property<string>("RemoteUid")
.IsRequired()
.HasColumnType("text")
.HasColumnName("remote_uid")
.HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв.");
b.Property<string>("TimeZone")
.IsRequired()
.HasColumnType("jsonb")
.HasColumnName("timezone")
.HasComment("Смещение часового пояса от UTC");
@ -3638,6 +3641,7 @@ namespace AsbCloudDb.Migrations
.HasColumnName("id_category");
b.Property<string>("MessageTemplate")
.IsRequired()
.HasColumnType("text")
.HasColumnName("message_template");
@ -3733,6 +3737,7 @@ namespace AsbCloudDb.Migrations
.HasColumnName("patronymic");
b.Property<string>("Surname")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("surname");

View File

@ -3,50 +3,41 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
#nullable disable
namespace AsbCloudDb.Model
{
[Table("t_telemetry"), Comment("таблица привязки телеметрии от комплектов к конкретной скважине.")]
[Index(nameof(RemoteUid), Name = "t_telemetry_remote_uid_index")]
public partial class Telemetry : IId
{
public Telemetry()
{
DataSaub = new HashSet<TelemetryDataSaub>();
Messages = new HashSet<TelemetryMessage>();
}
[Key]
[Column("id")]
public int Id { get; set; }
[Column("remote_uid"), Comment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв.")]
public string RemoteUid { get; set; }
public string RemoteUid { get; set; } = null!;
[Column("info", TypeName = "jsonb"), Comment("Информация с панели о скважине")]
public TelemetryInfo Info { get; set; }
public TelemetryInfo Info { get; set; } = new();
[Column("timezone", TypeName = "jsonb"), Comment("Смещение часового пояса от UTC")]
public SimpleTimezone TimeZone { get; set; }
public SimpleTimezone TimeZone { get; set; } = null!;
[InverseProperty(nameof(Model.Well.Telemetry))]
public virtual Well Well { get; set; }
public virtual Well? Well { get; set; }
[InverseProperty(nameof(TelemetryDataSaub.Telemetry))]
public virtual ICollection<TelemetryDataSaub> DataSaub { get; set; }
public virtual ICollection<TelemetryDataSaub> DataSaub { get; set; } = null!;
[InverseProperty(nameof(TelemetryDataSpin.Telemetry))]
public virtual ICollection<TelemetryDataSpin> DataSpin { get; set; }
public virtual ICollection<TelemetryDataSpin> DataSpin { get; set; } = null!;
[InverseProperty(nameof(TelemetryMessage.Telemetry))]
public virtual ICollection<TelemetryMessage> Messages { get; set; }
public virtual ICollection<TelemetryMessage> Messages { get; set; } = null!;
[InverseProperty(nameof(TelemetryUser.Telemetry))]
public virtual ICollection<TelemetryUser> Users { get; set; }
public virtual ICollection<TelemetryUser> Users { get; set; } = null!;
[InverseProperty(nameof(TelemetryEvent.Telemetry))]
public virtual ICollection<TelemetryEvent> Events { get; set; }
public virtual ICollection<TelemetryEvent> Events { get; set; } = null!;
}
}

View File

@ -3,8 +3,6 @@ using System;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;
#nullable disable
namespace AsbCloudDb.Model
{
[Table("t_telemetry_data_saub"), Comment("набор основных данных по SAUB")]
@ -130,9 +128,6 @@ namespace AsbCloudDb.Model
[JsonIgnore]
[ForeignKey(nameof(IdTelemetry))]
[InverseProperty(nameof(Model.Telemetry.DataSaub))]
public virtual Telemetry Telemetry { get; set; }
public virtual Telemetry Telemetry { get; set; } = null!;
}
}

View File

@ -5,7 +5,6 @@ using System.Text.Json.Serialization;
namespace AsbCloudDb.Model
{
#nullable disable
[Table("t_telemetry_data_spin"), Comment("набор основных данных по SpinMaster")]
public class TelemetryDataSpin : ITelemetryData
{
@ -48,7 +47,6 @@ namespace AsbCloudDb.Model
[JsonIgnore]
[ForeignKey(nameof(IdTelemetry))]
[InverseProperty(nameof(Model.Telemetry.DataSpin))]
public virtual Telemetry Telemetry { get; set; }
public virtual Telemetry Telemetry { get; set; } = null!;
}
}

View File

@ -2,8 +2,6 @@
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;
#nullable disable
namespace AsbCloudDb.Model
{
[Table("t_telemetry_event"), Comment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии.")]
@ -18,17 +16,17 @@ namespace AsbCloudDb.Model
[JsonIgnore]
[ForeignKey(nameof(IdTelemetry))]
[InverseProperty(nameof(Model.Telemetry.Events))]
public virtual Telemetry Telemetry { get; set; }
public virtual Telemetry Telemetry { get; set; } = null!;
[Column("id_category")]
public int IdCategory { get; set; }
[Column("message_template")]
public string MessageTemplate { get; set; }
public string MessageTemplate { get; set; } = string.Empty;
public string MakeMessageText(TelemetryMessage message)
{
var args = new string[] { message.Arg0, message.Arg1, message.Arg2, message.Arg3 };
var args = new string?[] { message.Arg0, message.Arg1, message.Arg2, message.Arg3 };
return string.Format(MessageTemplate, args);
}
}

View File

@ -2,20 +2,18 @@
namespace AsbCloudDb.Model
{
#nullable disable
public class TelemetryInfo
{
public DateTimeOffset DrillingStartDate { get; set; }
public string TimeZoneId { get; set; }
public string? TimeZoneId { get; set; }
public double TimeZoneOffsetTotalHours { get; set; }
public string Well { get; set; }
public string Cluster { get; set; }
public string Customer { get; set; }
public string Deposit { get; set; }
public string HmiVersion { get; set; }
public string SaubPlcVersion { get; set; }
public string SpinPlcVersion { get; set; }
public string Comment { get; set; }
public string Well { get; set; } = string.Empty;
public string Cluster { get; set; } = string.Empty;
public string Deposit { get; set; } = string.Empty;
public string? Customer { get; set; }
public string? HmiVersion { get; set; }
public string? SaubPlcVersion { get; set; }
public string? SpinPlcVersion { get; set; }
public string? Comment { get; set; }
}
}

View File

@ -3,8 +3,6 @@ using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
#nullable disable
namespace AsbCloudDb.Model
{
[Table("t_telemetry_message"), Comment("Сообщения на буровых")]
@ -31,22 +29,22 @@ namespace AsbCloudDb.Model
[Column("arg0"), Comment("Аргумент №0 для вставки в шаблон сообщения")]
[StringLength(255)]
public string Arg0 { get; set; }
public string? Arg0 { get; set; }
[Column("arg1")]
[StringLength(255)]
public string Arg1 { get; set; }
public string? Arg1 { get; set; }
[Column("arg2")]
[StringLength(255)]
public string Arg2 { get; set; }
public string? Arg2 { get; set; }
[Column("arg3")]
[StringLength(255)]
public string Arg3 { get; set; }
public string? Arg3 { get; set; }
[ForeignKey(nameof(IdTelemetry))]
[InverseProperty(nameof(Model.Telemetry.Messages))]
public virtual Telemetry Telemetry { get; set; }
public virtual Telemetry Telemetry { get; set; } = null!;
}
}

View File

@ -3,8 +3,6 @@ using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;
#nullable disable
namespace AsbCloudDb.Model
{
[Table("t_telemetry_user"), Comment("Пользователи панели САУБ. Для сообщений.")]
@ -19,19 +17,19 @@ namespace AsbCloudDb.Model
[JsonIgnore]
[ForeignKey(nameof(IdTelemetry))]
[InverseProperty(nameof(Model.Telemetry.Users))]
public virtual Telemetry Telemetry { get; set; }
public virtual Telemetry Telemetry { get; set; } = null!;
[Column("name")]
[StringLength(255)]
public string Name { get; set; }
public string? Name { get; set; }
[Column("surname")]
[StringLength(255)]
public string Surname { get; set; }
public string Surname { get; set; } = null!;
[Column("patronymic")]
[StringLength(255)]
public string Patronymic { get; set; }
public string? Patronymic { get; set; }
[Column("level")]
public int? Level { get; set; }