From 3ffd8d23a0d7fbf433cafc0e5249f8c7aa21c232 Mon Sep 17 00:00:00 2001
From: Jeas0001 <jeas0001@edu.mercantec.dk>
Date: Wed, 19 Mar 2025 13:42:30 +0100
Subject: [PATCH] Migration works

---
 backend/Api/DBAccess/DBAccess.cs              |   2 +
 ...124149_AddedSaltUserNameDevice.Designer.cs | 132 ++++++++++++++++++
 .../20250319124149_AddedSaltUserNameDevice.cs |  39 ++++++
 .../Api/Migrations/DBContextModelSnapshot.cs  |  25 ++--
 backend/Api/Models/Device.cs                  |   2 +
 backend/Api/Models/User.cs                    |   2 +-
 backend/Api/Program.cs                        |  30 ++--
 7 files changed, 214 insertions(+), 18 deletions(-)
 create mode 100644 backend/Api/Migrations/20250319124149_AddedSaltUserNameDevice.Designer.cs
 create mode 100644 backend/Api/Migrations/20250319124149_AddedSaltUserNameDevice.cs

diff --git a/backend/Api/DBAccess/DBAccess.cs b/backend/Api/DBAccess/DBAccess.cs
index b4c803a..a4a1273 100644
--- a/backend/Api/DBAccess/DBAccess.cs
+++ b/backend/Api/DBAccess/DBAccess.cs
@@ -120,6 +120,8 @@ namespace Api.DBAccess
 
             device1.ReferenceId = device.ReferenceId;
 
+            device1.Name = device.Name;
+
             return await _context.SaveChangesAsync() == 1;
         }
 
diff --git a/backend/Api/Migrations/20250319124149_AddedSaltUserNameDevice.Designer.cs b/backend/Api/Migrations/20250319124149_AddedSaltUserNameDevice.Designer.cs
new file mode 100644
index 0000000..6a74e0e
--- /dev/null
+++ b/backend/Api/Migrations/20250319124149_AddedSaltUserNameDevice.Designer.cs
@@ -0,0 +1,132 @@
+// <auto-generated />
+using System;
+using Api;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace Api.Migrations
+{
+    [DbContext(typeof(DBContext))]
+    [Migration("20250319124149_AddedSaltUserNameDevice")]
+    partial class AddedSaltUserNameDevice
+    {
+        /// <inheritdoc />
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder.HasAnnotation("ProductVersion", "9.0.3");
+
+            modelBuilder.Entity("Api.Models.Device", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("ReferenceId")
+                        .HasColumnType("TEXT");
+
+                    b.Property<double>("TempHigh")
+                        .HasColumnType("REAL");
+
+                    b.Property<double>("TempLow")
+                        .HasColumnType("REAL");
+
+                    b.Property<int?>("UserId")
+                        .HasColumnType("INTEGER");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("Devices");
+                });
+
+            modelBuilder.Entity("Api.Models.TemperatureLogs", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<DateTime>("Date")
+                        .HasColumnType("TEXT");
+
+                    b.Property<int?>("DeviceId")
+                        .HasColumnType("INTEGER");
+
+                    b.Property<double>("TempHigh")
+                        .HasColumnType("REAL");
+
+                    b.Property<double>("TempLow")
+                        .HasColumnType("REAL");
+
+                    b.Property<double>("Temperature")
+                        .HasColumnType("REAL");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("DeviceId");
+
+                    b.ToTable("TemperatureLogs");
+                });
+
+            modelBuilder.Entity("Api.Models.User", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("INTEGER");
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Password")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("Salt")
+                        .HasColumnType("TEXT");
+
+                    b.Property<string>("UserName")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Users");
+                });
+
+            modelBuilder.Entity("Api.Models.Device", b =>
+                {
+                    b.HasOne("Api.Models.User", null)
+                        .WithMany("Devices")
+                        .HasForeignKey("UserId");
+                });
+
+            modelBuilder.Entity("Api.Models.TemperatureLogs", b =>
+                {
+                    b.HasOne("Api.Models.Device", null)
+                        .WithMany("Logs")
+                        .HasForeignKey("DeviceId");
+                });
+
+            modelBuilder.Entity("Api.Models.Device", b =>
+                {
+                    b.Navigation("Logs");
+                });
+
+            modelBuilder.Entity("Api.Models.User", b =>
+                {
+                    b.Navigation("Devices");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/backend/Api/Migrations/20250319124149_AddedSaltUserNameDevice.cs b/backend/Api/Migrations/20250319124149_AddedSaltUserNameDevice.cs
new file mode 100644
index 0000000..9e9cf79
--- /dev/null
+++ b/backend/Api/Migrations/20250319124149_AddedSaltUserNameDevice.cs
@@ -0,0 +1,39 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Api.Migrations
+{
+    /// <inheritdoc />
+    public partial class AddedSaltUserNameDevice : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.AddColumn<string>(
+                name: "Salt",
+                table: "Users",
+                type: "TEXT",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "Name",
+                table: "Devices",
+                type: "TEXT",
+                nullable: false,
+                defaultValue: "");
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropColumn(
+                name: "Salt",
+                table: "Users");
+
+            migrationBuilder.DropColumn(
+                name: "Name",
+                table: "Devices");
+        }
+    }
+}
diff --git a/backend/Api/Migrations/DBContextModelSnapshot.cs b/backend/Api/Migrations/DBContextModelSnapshot.cs
index babadca..69184bb 100644
--- a/backend/Api/Migrations/DBContextModelSnapshot.cs
+++ b/backend/Api/Migrations/DBContextModelSnapshot.cs
@@ -17,12 +17,16 @@ namespace Api.Migrations
 #pragma warning disable 612, 618
             modelBuilder.HasAnnotation("ProductVersion", "9.0.3");
 
-            modelBuilder.Entity("Models.Device", b =>
+            modelBuilder.Entity("Api.Models.Device", b =>
                 {
                     b.Property<int>("Id")
                         .ValueGeneratedOnAdd()
                         .HasColumnType("INTEGER");
 
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("TEXT");
+
                     b.Property<string>("ReferenceId")
                         .HasColumnType("TEXT");
 
@@ -42,7 +46,7 @@ namespace Api.Migrations
                     b.ToTable("Devices");
                 });
 
-            modelBuilder.Entity("Models.TemperatureLogs", b =>
+            modelBuilder.Entity("Api.Models.TemperatureLogs", b =>
                 {
                     b.Property<int>("Id")
                         .ValueGeneratedOnAdd()
@@ -70,7 +74,7 @@ namespace Api.Migrations
                     b.ToTable("TemperatureLogs");
                 });
 
-            modelBuilder.Entity("Models.User", b =>
+            modelBuilder.Entity("Api.Models.User", b =>
                 {
                     b.Property<int>("Id")
                         .ValueGeneratedOnAdd()
@@ -84,6 +88,9 @@ namespace Api.Migrations
                         .IsRequired()
                         .HasColumnType("TEXT");
 
+                    b.Property<string>("Salt")
+                        .HasColumnType("TEXT");
+
                     b.Property<string>("UserName")
                         .IsRequired()
                         .HasColumnType("TEXT");
@@ -93,26 +100,26 @@ namespace Api.Migrations
                     b.ToTable("Users");
                 });
 
-            modelBuilder.Entity("Models.Device", b =>
+            modelBuilder.Entity("Api.Models.Device", b =>
                 {
-                    b.HasOne("Models.User", null)
+                    b.HasOne("Api.Models.User", null)
                         .WithMany("Devices")
                         .HasForeignKey("UserId");
                 });
 
-            modelBuilder.Entity("Models.TemperatureLogs", b =>
+            modelBuilder.Entity("Api.Models.TemperatureLogs", b =>
                 {
-                    b.HasOne("Models.Device", null)
+                    b.HasOne("Api.Models.Device", null)
                         .WithMany("Logs")
                         .HasForeignKey("DeviceId");
                 });
 
-            modelBuilder.Entity("Models.Device", b =>
+            modelBuilder.Entity("Api.Models.Device", b =>
                 {
                     b.Navigation("Logs");
                 });
 
-            modelBuilder.Entity("Models.User", b =>
+            modelBuilder.Entity("Api.Models.User", b =>
                 {
                     b.Navigation("Devices");
                 });
diff --git a/backend/Api/Models/Device.cs b/backend/Api/Models/Device.cs
index 1c7c1b0..aa629ed 100644
--- a/backend/Api/Models/Device.cs
+++ b/backend/Api/Models/Device.cs
@@ -4,6 +4,8 @@
     {
         public int Id { get; set; }
 
+        public string Name { get; set; }
+
         public double TempHigh { get; set; }
 
         public double TempLow { get; set; }
diff --git a/backend/Api/Models/User.cs b/backend/Api/Models/User.cs
index fd519ba..4583fab 100644
--- a/backend/Api/Models/User.cs
+++ b/backend/Api/Models/User.cs
@@ -10,7 +10,7 @@
 
         public string Email { get; set; }
 
-        public string Salt { get; set; }
+        public string? Salt { get; set; }
 
         public List<Device>? Devices { get; set; }
     }
diff --git a/backend/Api/Program.cs b/backend/Api/Program.cs
index 5490e59..ce4f270 100644
--- a/backend/Api/Program.cs
+++ b/backend/Api/Program.cs
@@ -2,14 +2,28 @@ using Api;
 using Microsoft.AspNetCore;
 using Microsoft.EntityFrameworkCore;
 
-var app = WebHost.CreateDefaultBuilder(args)
-	.UseUrls("http://0.0.0.0:5000")
-	.UseStartup<Startup>()
-	.Build();
+class Program
+{
+    public static void Main(string[] args)
+    {
+        var app = CreateWebHostBuilder(args).Build();
 
-await using var scope = app.Services.CreateAsyncScope();
-await using var db = scope.ServiceProvider.GetService<DBContext>();
-await db.Database.MigrateAsync();
+        RunMigrations(app);
+
+        app.Run();
+    }
+    // Calls the startup class and creates the webinterface
+    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
+        WebHost.CreateDefaultBuilder(args)
+                .UseUrls("0.0.0.0:5000")
+                .UseStartup<Startup>();
+
+    public static async void RunMigrations(IWebHost app)
+    {
+        await using var scope = app.Services.CreateAsyncScope();
+        await using var db = scope.ServiceProvider.GetService<DbContext>();
+        await db.Database.MigrateAsync();
+    }
+}
 
-app.Run();