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 @@
+//
+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
+ {
+ ///
+ 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("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("ReferenceId")
+ .HasColumnType("TEXT");
+
+ b.Property("TempHigh")
+ .HasColumnType("REAL");
+
+ b.Property("TempLow")
+ .HasColumnType("REAL");
+
+ b.Property("UserId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Devices");
+ });
+
+ modelBuilder.Entity("Api.Models.TemperatureLogs", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Date")
+ .HasColumnType("TEXT");
+
+ b.Property("DeviceId")
+ .HasColumnType("INTEGER");
+
+ b.Property("TempHigh")
+ .HasColumnType("REAL");
+
+ b.Property("TempLow")
+ .HasColumnType("REAL");
+
+ b.Property("Temperature")
+ .HasColumnType("REAL");
+
+ b.HasKey("Id");
+
+ b.HasIndex("DeviceId");
+
+ b.ToTable("TemperatureLogs");
+ });
+
+ modelBuilder.Entity("Api.Models.User", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Email")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Salt")
+ .HasColumnType("TEXT");
+
+ b.Property("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
+{
+ ///
+ public partial class AddedSaltUserNameDevice : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "Salt",
+ table: "Users",
+ type: "TEXT",
+ nullable: true);
+
+ migrationBuilder.AddColumn(
+ name: "Name",
+ table: "Devices",
+ type: "TEXT",
+ nullable: false,
+ defaultValue: "");
+ }
+
+ ///
+ 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("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
b.Property("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("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("Id")
.ValueGeneratedOnAdd()
@@ -84,6 +88,9 @@ namespace Api.Migrations
.IsRequired()
.HasColumnType("TEXT");
+ b.Property("Salt")
+ .HasColumnType("TEXT");
+
b.Property("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? 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()
- .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();
-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();
+
+ public static async void RunMigrations(IWebHost app)
+ {
+ await using var scope = app.Services.CreateAsyncScope();
+ await using var db = scope.ServiceProvider.GetService();
+ await db.Database.MigrateAsync();
+ }
+}
-app.Run();