version 2

This commit is contained in:
2025-12-16 16:52:40 +03:30
parent 61e86b1e96
commit 139924db94
52 changed files with 7350 additions and 321 deletions

View File

@@ -22,6 +22,100 @@ namespace GreenHome.Infrastructure.Migrations
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("GreenHome.Domain.AIQuery", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Answer")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("CompletionTokens")
.HasColumnType("int");
b.Property<DateTime>("CreatedAt")
.HasColumnType("datetime2");
b.Property<int?>("DeviceId")
.HasColumnType("int");
b.Property<string>("Model")
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property<int>("PromptTokens")
.HasColumnType("int");
b.Property<string>("Question")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<long?>("ResponseTimeMs")
.HasColumnType("bigint");
b.Property<double?>("Temperature")
.HasColumnType("float");
b.Property<int>("TotalTokens")
.HasColumnType("int");
b.Property<int?>("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.HasIndex("DeviceId");
b.HasIndex("UserId");
b.ToTable("AIQueries", (string)null);
});
modelBuilder.Entity("GreenHome.Domain.AlertCondition", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("CallCooldownMinutes")
.HasColumnType("int");
b.Property<DateTime>("CreatedAt")
.HasColumnType("datetime2");
b.Property<int>("DeviceId")
.HasColumnType("int");
b.Property<bool>("IsEnabled")
.HasColumnType("bit");
b.Property<int>("NotificationType")
.HasColumnType("int");
b.Property<int>("SmsCooldownMinutes")
.HasColumnType("int");
b.Property<int>("TimeType")
.HasColumnType("int");
b.Property<DateTime>("UpdatedAt")
.HasColumnType("datetime2");
b.HasKey("Id");
b.HasIndex("DeviceId");
b.ToTable("AlertConditions", (string)null);
});
modelBuilder.Entity("GreenHome.Domain.AlertNotification", b =>
{
b.Property<int>("Id")
@@ -30,10 +124,8 @@ namespace GreenHome.Infrastructure.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("AlertType")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<int>("AlertConditionId")
.HasColumnType("int");
b.Property<int>("DeviceId")
.HasColumnType("int");
@@ -54,6 +146,9 @@ namespace GreenHome.Infrastructure.Migrations
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<int>("NotificationType")
.HasColumnType("int");
b.Property<DateTime>("SentAt")
.HasColumnType("datetime2");
@@ -62,13 +157,114 @@ namespace GreenHome.Infrastructure.Migrations
b.HasKey("Id");
b.HasIndex("AlertConditionId");
b.HasIndex("UserId");
b.HasIndex("DeviceId", "UserId", "AlertType", "SentAt");
b.HasIndex("DeviceId", "UserId", "AlertConditionId", "SentAt");
b.ToTable("AlertNotifications", (string)null);
});
modelBuilder.Entity("GreenHome.Domain.AlertRule", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("AlertConditionId")
.HasColumnType("int");
b.Property<int>("ComparisonType")
.HasColumnType("int");
b.Property<int>("Order")
.HasColumnType("int");
b.Property<int>("SensorType")
.HasColumnType("int");
b.Property<decimal>("Value1")
.HasColumnType("decimal(18,2)");
b.Property<decimal?>("Value2")
.HasColumnType("decimal(18,2)");
b.HasKey("Id");
b.HasIndex("AlertConditionId");
b.ToTable("AlertRules", (string)null);
});
modelBuilder.Entity("GreenHome.Domain.DailyReport", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Analysis")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("CompletionTokens")
.HasColumnType("int");
b.Property<DateTime>("CreatedAt")
.HasColumnType("datetime2");
b.Property<int>("DeviceId")
.HasColumnType("int");
b.Property<string>("Model")
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property<string>("PersianDate")
.IsRequired()
.HasMaxLength(10)
.HasColumnType("nvarchar(10)");
b.Property<int>("PersianDay")
.HasColumnType("int");
b.Property<int>("PersianMonth")
.HasColumnType("int");
b.Property<int>("PersianYear")
.HasColumnType("int");
b.Property<int>("PromptTokens")
.HasColumnType("int");
b.Property<int>("RecordCount")
.HasColumnType("int");
b.Property<long?>("ResponseTimeMs")
.HasColumnType("bigint");
b.Property<int>("SampledRecordCount")
.HasColumnType("int");
b.Property<int>("TotalTokens")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("CreatedAt");
b.HasIndex("DeviceId", "PersianDate")
.IsUnique();
b.HasIndex("DeviceId", "PersianYear", "PersianMonth");
b.ToTable("DailyReports", (string)null);
});
modelBuilder.Entity("GreenHome.Domain.Device", b =>
{
b.Property<int>("Id")
@@ -110,41 +306,27 @@ namespace GreenHome.Infrastructure.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("City")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property<DateTime>("CreatedAt")
.HasColumnType("datetime2");
b.Property<decimal>("DangerMaxTemperature")
.HasColumnType("decimal(18,2)");
b.Property<decimal>("DangerMinTemperature")
.HasColumnType("decimal(18,2)");
b.Property<int>("DeviceId")
.HasColumnType("int");
b.Property<int>("MaxGasPPM")
.HasColumnType("int");
b.Property<decimal?>("Latitude")
.HasColumnType("decimal(9,6)");
b.Property<decimal>("MaxHumidityPercent")
.HasColumnType("decimal(18,2)");
b.Property<decimal?>("Longitude")
.HasColumnType("decimal(9,6)");
b.Property<decimal>("MaxLux")
.HasColumnType("decimal(18,2)");
b.Property<decimal>("MaxTemperature")
.HasColumnType("decimal(18,2)");
b.Property<int>("MinGasPPM")
.HasColumnType("int");
b.Property<decimal>("MinHumidityPercent")
.HasColumnType("decimal(18,2)");
b.Property<decimal>("MinLux")
.HasColumnType("decimal(18,2)");
b.Property<decimal>("MinTemperature")
.HasColumnType("decimal(18,2)");
b.Property<string>("Province")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property<DateTime>("UpdatedAt")
.HasColumnType("datetime2");
@@ -303,8 +485,42 @@ namespace GreenHome.Infrastructure.Migrations
b.ToTable("VerificationCodes", (string)null);
});
modelBuilder.Entity("GreenHome.Domain.AIQuery", b =>
{
b.HasOne("GreenHome.Domain.Device", "Device")
.WithMany()
.HasForeignKey("DeviceId")
.OnDelete(DeleteBehavior.SetNull);
b.HasOne("GreenHome.Domain.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.SetNull);
b.Navigation("Device");
b.Navigation("User");
});
modelBuilder.Entity("GreenHome.Domain.AlertCondition", b =>
{
b.HasOne("GreenHome.Domain.Device", "Device")
.WithMany()
.HasForeignKey("DeviceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Device");
});
modelBuilder.Entity("GreenHome.Domain.AlertNotification", b =>
{
b.HasOne("GreenHome.Domain.AlertCondition", "AlertCondition")
.WithMany()
.HasForeignKey("AlertConditionId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("GreenHome.Domain.Device", "Device")
.WithMany()
.HasForeignKey("DeviceId")
@@ -317,11 +533,35 @@ namespace GreenHome.Infrastructure.Migrations
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("AlertCondition");
b.Navigation("Device");
b.Navigation("User");
});
modelBuilder.Entity("GreenHome.Domain.AlertRule", b =>
{
b.HasOne("GreenHome.Domain.AlertCondition", "AlertCondition")
.WithMany("Rules")
.HasForeignKey("AlertConditionId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("AlertCondition");
});
modelBuilder.Entity("GreenHome.Domain.DailyReport", b =>
{
b.HasOne("GreenHome.Domain.Device", "Device")
.WithMany()
.HasForeignKey("DeviceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Device");
});
modelBuilder.Entity("GreenHome.Domain.Device", b =>
{
b.HasOne("GreenHome.Domain.User", "User")
@@ -363,6 +603,11 @@ namespace GreenHome.Infrastructure.Migrations
b.Navigation("User");
});
modelBuilder.Entity("GreenHome.Domain.AlertCondition", b =>
{
b.Navigation("Rules");
});
modelBuilder.Entity("GreenHome.Domain.Device", b =>
{
b.Navigation("DeviceUsers");