diff --git a/MoonlightServers.ApiServer.Runtime/MoonlightServers.ApiServer.Runtime.csproj b/MoonlightServers.ApiServer.Runtime/MoonlightServers.ApiServer.Runtime.csproj
index d14c8a7..002a910 100644
--- a/MoonlightServers.ApiServer.Runtime/MoonlightServers.ApiServer.Runtime.csproj
+++ b/MoonlightServers.ApiServer.Runtime/MoonlightServers.ApiServer.Runtime.csproj
@@ -13,7 +13,7 @@
-
+
diff --git a/MoonlightServers.ApiServer.Runtime/Program.cs b/MoonlightServers.ApiServer.Runtime/Program.cs
index 944f9a0..7ba1fd9 100644
--- a/MoonlightServers.ApiServer.Runtime/Program.cs
+++ b/MoonlightServers.ApiServer.Runtime/Program.cs
@@ -6,15 +6,15 @@ pluginLoader.Initialize();
var cs = new Startup();
-await cs.Initialize(args, pluginLoader.Instances);
+await cs.InitializeAsync(args, pluginLoader.Instances);
var builder = WebApplication.CreateBuilder(args);
-await cs.AddMoonlight(builder);
+await cs.AddMoonlightAsync(builder);
var app = builder.Build();
-await cs.AddMoonlight(app);
+await cs.AddMoonlightAsync(app);
// Handle setup of wasm app hosting in the runtime
// so the Moonlight.ApiServer doesn't need the wasm package
diff --git a/MoonlightServers.ApiServer/Database/Entities/Node.cs b/MoonlightServers.ApiServer/Database/Entities/Node.cs
index 7ef1d75..c53f578 100644
--- a/MoonlightServers.ApiServer/Database/Entities/Node.cs
+++ b/MoonlightServers.ApiServer/Database/Entities/Node.cs
@@ -18,8 +18,4 @@ public class Node
public int HttpPort { get; set; }
public int FtpPort { get; set; }
public bool UseSsl { get; set; }
-
- // Misc
- public bool EnableTransparentMode { get; set; }
- public bool EnableDynamicFirewall { get; set; }
}
\ No newline at end of file
diff --git a/MoonlightServers.ApiServer/Database/Entities/Server.cs b/MoonlightServers.ApiServer/Database/Entities/Server.cs
index 66feafb..f7a6b34 100644
--- a/MoonlightServers.ApiServer/Database/Entities/Server.cs
+++ b/MoonlightServers.ApiServer/Database/Entities/Server.cs
@@ -24,6 +24,4 @@ public class Server
public int Cpu { get; set; }
public int Memory { get; set; }
public int Disk { get; set; }
- public bool UseVirtualDisk { get; set; }
- public int Bandwidth { get; set; }
}
\ No newline at end of file
diff --git a/MoonlightServers.ApiServer/Database/Migrations/20250226210232_RecreatedMigrationsForPostgresql.Designer.cs b/MoonlightServers.ApiServer/Database/Migrations/20250226210232_RecreatedMigrationsForPostgresql.Designer.cs
deleted file mode 100644
index 3ea509c..0000000
--- a/MoonlightServers.ApiServer/Database/Migrations/20250226210232_RecreatedMigrationsForPostgresql.Designer.cs
+++ /dev/null
@@ -1,452 +0,0 @@
-//
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using MoonlightServers.ApiServer.Database;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace MoonlightServers.ApiServer.Database.Migrations
-{
- [DbContext(typeof(ServersDataContext))]
- [Migration("20250226210232_RecreatedMigrationsForPostgresql")]
- partial class RecreatedMigrationsForPostgresql
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasAnnotation("ProductVersion", "8.0.11")
- .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
- NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Allocation", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("IpAddress")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("NodeId")
- .HasColumnType("integer");
-
- b.Property("Port")
- .HasColumnType("integer");
-
- b.Property("ServerId")
- .HasColumnType("integer");
-
- b.HasKey("Id");
-
- b.HasIndex("NodeId");
-
- b.HasIndex("ServerId");
-
- b.ToTable("Servers_Allocations", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Node", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("EnableDynamicFirewall")
- .HasColumnType("boolean");
-
- b.Property("EnableTransparentMode")
- .HasColumnType("boolean");
-
- b.Property("Fqdn")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("FtpPort")
- .HasColumnType("integer");
-
- b.Property("HttpPort")
- .HasColumnType("integer");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Token")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("UseSsl")
- .HasColumnType("boolean");
-
- b.HasKey("Id");
-
- b.ToTable("Servers_Nodes", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Server", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Bandwidth")
- .HasColumnType("integer");
-
- b.Property("Cpu")
- .HasColumnType("integer");
-
- b.Property("Disk")
- .HasColumnType("integer");
-
- b.Property("DockerImageIndex")
- .HasColumnType("integer");
-
- b.Property("Memory")
- .HasColumnType("integer");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("NodeId")
- .HasColumnType("integer");
-
- b.Property("OwnerId")
- .HasColumnType("integer");
-
- b.Property("StarId")
- .HasColumnType("integer");
-
- b.Property("StartupOverride")
- .HasColumnType("text");
-
- b.Property("UseVirtualDisk")
- .HasColumnType("boolean");
-
- b.HasKey("Id");
-
- b.HasIndex("NodeId");
-
- b.HasIndex("StarId");
-
- b.ToTable("Servers_Servers", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.ServerBackup", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Completed")
- .HasColumnType("boolean");
-
- b.Property("CompletedAt")
- .HasColumnType("timestamp with time zone");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp with time zone");
-
- b.Property("ServerId")
- .HasColumnType("integer");
-
- b.Property("Size")
- .HasColumnType("bigint");
-
- b.Property("Successful")
- .HasColumnType("boolean");
-
- b.HasKey("Id");
-
- b.HasIndex("ServerId");
-
- b.ToTable("Servers_ServerBackups", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.ServerVariable", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Key")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("ServerId")
- .HasColumnType("integer");
-
- b.Property("Value")
- .IsRequired()
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.HasIndex("ServerId");
-
- b.ToTable("Servers_ServerVariables", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Star", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("AllowDockerImageChange")
- .HasColumnType("boolean");
-
- b.Property("Author")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("DefaultDockerImage")
- .HasColumnType("integer");
-
- b.Property("DonateUrl")
- .HasColumnType("text");
-
- b.Property("InstallDockerImage")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("InstallScript")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("InstallShell")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("OnlineDetection")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("ParseConfiguration")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("RequiredAllocations")
- .HasColumnType("integer");
-
- b.Property("StartupCommand")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("StopCommand")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("UpdateUrl")
- .HasColumnType("text");
-
- b.Property("Version")
- .IsRequired()
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.ToTable("Servers_Stars", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.StarDockerImage", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("AutoPulling")
- .HasColumnType("boolean");
-
- b.Property("DisplayName")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Identifier")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("StarId")
- .HasColumnType("integer");
-
- b.HasKey("Id");
-
- b.HasIndex("StarId");
-
- b.ToTable("Servers_StarDockerImages", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.StarVariable", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("AllowEditing")
- .HasColumnType("boolean");
-
- b.Property("AllowViewing")
- .HasColumnType("boolean");
-
- b.Property("DefaultValue")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Description")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Filter")
- .HasColumnType("text");
-
- b.Property("Key")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("StarId")
- .HasColumnType("integer");
-
- b.Property("Type")
- .HasColumnType("integer");
-
- b.HasKey("Id");
-
- b.HasIndex("StarId");
-
- b.ToTable("Servers_StarVariables", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Allocation", b =>
- {
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Node", "Node")
- .WithMany("Allocations")
- .HasForeignKey("NodeId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Server", "Server")
- .WithMany("Allocations")
- .HasForeignKey("ServerId");
-
- b.Navigation("Node");
-
- b.Navigation("Server");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Server", b =>
- {
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Node", "Node")
- .WithMany("Servers")
- .HasForeignKey("NodeId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Star", "Star")
- .WithMany()
- .HasForeignKey("StarId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.Navigation("Node");
-
- b.Navigation("Star");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.ServerBackup", b =>
- {
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Server", null)
- .WithMany("Backups")
- .HasForeignKey("ServerId");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.ServerVariable", b =>
- {
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Server", "Server")
- .WithMany("Variables")
- .HasForeignKey("ServerId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.Navigation("Server");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.StarDockerImage", b =>
- {
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Star", "Star")
- .WithMany("DockerImages")
- .HasForeignKey("StarId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.Navigation("Star");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.StarVariable", b =>
- {
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Star", "Star")
- .WithMany("Variables")
- .HasForeignKey("StarId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.Navigation("Star");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Node", b =>
- {
- b.Navigation("Allocations");
-
- b.Navigation("Servers");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Server", b =>
- {
- b.Navigation("Allocations");
-
- b.Navigation("Backups");
-
- b.Navigation("Variables");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Star", b =>
- {
- b.Navigation("DockerImages");
-
- b.Navigation("Variables");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/MoonlightServers.ApiServer/Database/Migrations/20250301142415_AddedTokenIdField.Designer.cs b/MoonlightServers.ApiServer/Database/Migrations/20250301142415_AddedTokenIdField.Designer.cs
deleted file mode 100644
index 438e78a..0000000
--- a/MoonlightServers.ApiServer/Database/Migrations/20250301142415_AddedTokenIdField.Designer.cs
+++ /dev/null
@@ -1,456 +0,0 @@
-//
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using MoonlightServers.ApiServer.Database;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace MoonlightServers.ApiServer.Database.Migrations
-{
- [DbContext(typeof(ServersDataContext))]
- [Migration("20250301142415_AddedTokenIdField")]
- partial class AddedTokenIdField
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasAnnotation("ProductVersion", "8.0.11")
- .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
- NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Allocation", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("IpAddress")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("NodeId")
- .HasColumnType("integer");
-
- b.Property("Port")
- .HasColumnType("integer");
-
- b.Property("ServerId")
- .HasColumnType("integer");
-
- b.HasKey("Id");
-
- b.HasIndex("NodeId");
-
- b.HasIndex("ServerId");
-
- b.ToTable("Servers_Allocations", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Node", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("EnableDynamicFirewall")
- .HasColumnType("boolean");
-
- b.Property("EnableTransparentMode")
- .HasColumnType("boolean");
-
- b.Property("Fqdn")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("FtpPort")
- .HasColumnType("integer");
-
- b.Property("HttpPort")
- .HasColumnType("integer");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Token")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("TokenId")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("UseSsl")
- .HasColumnType("boolean");
-
- b.HasKey("Id");
-
- b.ToTable("Servers_Nodes", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Server", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Bandwidth")
- .HasColumnType("integer");
-
- b.Property("Cpu")
- .HasColumnType("integer");
-
- b.Property("Disk")
- .HasColumnType("integer");
-
- b.Property("DockerImageIndex")
- .HasColumnType("integer");
-
- b.Property("Memory")
- .HasColumnType("integer");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("NodeId")
- .HasColumnType("integer");
-
- b.Property("OwnerId")
- .HasColumnType("integer");
-
- b.Property("StarId")
- .HasColumnType("integer");
-
- b.Property("StartupOverride")
- .HasColumnType("text");
-
- b.Property("UseVirtualDisk")
- .HasColumnType("boolean");
-
- b.HasKey("Id");
-
- b.HasIndex("NodeId");
-
- b.HasIndex("StarId");
-
- b.ToTable("Servers_Servers", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.ServerBackup", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Completed")
- .HasColumnType("boolean");
-
- b.Property("CompletedAt")
- .HasColumnType("timestamp with time zone");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp with time zone");
-
- b.Property("ServerId")
- .HasColumnType("integer");
-
- b.Property("Size")
- .HasColumnType("bigint");
-
- b.Property("Successful")
- .HasColumnType("boolean");
-
- b.HasKey("Id");
-
- b.HasIndex("ServerId");
-
- b.ToTable("Servers_ServerBackups", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.ServerVariable", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Key")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("ServerId")
- .HasColumnType("integer");
-
- b.Property("Value")
- .IsRequired()
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.HasIndex("ServerId");
-
- b.ToTable("Servers_ServerVariables", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Star", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("AllowDockerImageChange")
- .HasColumnType("boolean");
-
- b.Property("Author")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("DefaultDockerImage")
- .HasColumnType("integer");
-
- b.Property("DonateUrl")
- .HasColumnType("text");
-
- b.Property("InstallDockerImage")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("InstallScript")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("InstallShell")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("OnlineDetection")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("ParseConfiguration")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("RequiredAllocations")
- .HasColumnType("integer");
-
- b.Property("StartupCommand")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("StopCommand")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("UpdateUrl")
- .HasColumnType("text");
-
- b.Property("Version")
- .IsRequired()
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.ToTable("Servers_Stars", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.StarDockerImage", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("AutoPulling")
- .HasColumnType("boolean");
-
- b.Property("DisplayName")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Identifier")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("StarId")
- .HasColumnType("integer");
-
- b.HasKey("Id");
-
- b.HasIndex("StarId");
-
- b.ToTable("Servers_StarDockerImages", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.StarVariable", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("AllowEditing")
- .HasColumnType("boolean");
-
- b.Property("AllowViewing")
- .HasColumnType("boolean");
-
- b.Property("DefaultValue")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Description")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Filter")
- .HasColumnType("text");
-
- b.Property("Key")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("StarId")
- .HasColumnType("integer");
-
- b.Property("Type")
- .HasColumnType("integer");
-
- b.HasKey("Id");
-
- b.HasIndex("StarId");
-
- b.ToTable("Servers_StarVariables", (string)null);
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Allocation", b =>
- {
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Node", "Node")
- .WithMany("Allocations")
- .HasForeignKey("NodeId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Server", "Server")
- .WithMany("Allocations")
- .HasForeignKey("ServerId");
-
- b.Navigation("Node");
-
- b.Navigation("Server");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Server", b =>
- {
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Node", "Node")
- .WithMany("Servers")
- .HasForeignKey("NodeId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Star", "Star")
- .WithMany()
- .HasForeignKey("StarId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.Navigation("Node");
-
- b.Navigation("Star");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.ServerBackup", b =>
- {
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Server", null)
- .WithMany("Backups")
- .HasForeignKey("ServerId");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.ServerVariable", b =>
- {
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Server", "Server")
- .WithMany("Variables")
- .HasForeignKey("ServerId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.Navigation("Server");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.StarDockerImage", b =>
- {
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Star", "Star")
- .WithMany("DockerImages")
- .HasForeignKey("StarId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.Navigation("Star");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.StarVariable", b =>
- {
- b.HasOne("MoonlightServers.ApiServer.Database.Entities.Star", "Star")
- .WithMany("Variables")
- .HasForeignKey("StarId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.Navigation("Star");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Node", b =>
- {
- b.Navigation("Allocations");
-
- b.Navigation("Servers");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Server", b =>
- {
- b.Navigation("Allocations");
-
- b.Navigation("Backups");
-
- b.Navigation("Variables");
- });
-
- modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Star", b =>
- {
- b.Navigation("DockerImages");
-
- b.Navigation("Variables");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/MoonlightServers.ApiServer/Database/Migrations/20250301142415_AddedTokenIdField.cs b/MoonlightServers.ApiServer/Database/Migrations/20250301142415_AddedTokenIdField.cs
deleted file mode 100644
index b802de4..0000000
--- a/MoonlightServers.ApiServer/Database/Migrations/20250301142415_AddedTokenIdField.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace MoonlightServers.ApiServer.Database.Migrations
-{
- ///
- public partial class AddedTokenIdField : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.AddColumn(
- name: "TokenId",
- table: "Servers_Nodes",
- type: "text",
- nullable: false,
- defaultValue: "");
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.DropColumn(
- name: "TokenId",
- table: "Servers_Nodes");
- }
- }
-}
diff --git a/MoonlightServers.ApiServer/Database/Migrations/20250606121013_AddedShares.cs b/MoonlightServers.ApiServer/Database/Migrations/20250606121013_AddedShares.cs
deleted file mode 100644
index fe5dd2c..0000000
--- a/MoonlightServers.ApiServer/Database/Migrations/20250606121013_AddedShares.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace MoonlightServers.ApiServer.Database.Migrations
-{
- ///
- public partial class AddedShares : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.CreateTable(
- name: "Servers_ServerShares",
- columns: table => new
- {
- Id = table.Column(type: "integer", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- UserId = table.Column(type: "integer", nullable: false),
- ServerId = table.Column(type: "integer", nullable: false),
- CreatedAt = table.Column(type: "timestamp with time zone", nullable: false),
- UpdatedAt = table.Column(type: "timestamp with time zone", nullable: false),
- Content = table.Column(type: "jsonb", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_Servers_ServerShares", x => x.Id);
- table.ForeignKey(
- name: "FK_Servers_ServerShares_Servers_Servers_ServerId",
- column: x => x.ServerId,
- principalTable: "Servers_Servers",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- });
-
- migrationBuilder.CreateIndex(
- name: "IX_Servers_ServerShares_ServerId",
- table: "Servers_ServerShares",
- column: "ServerId");
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.DropTable(
- name: "Servers_ServerShares");
- }
- }
-}
diff --git a/MoonlightServers.ApiServer/Database/Migrations/20250606121013_AddedShares.Designer.cs b/MoonlightServers.ApiServer/Database/Migrations/20250922091731_RecreatedModelsInNewSchema.Designer.cs
similarity index 92%
rename from MoonlightServers.ApiServer/Database/Migrations/20250606121013_AddedShares.Designer.cs
rename to MoonlightServers.ApiServer/Database/Migrations/20250922091731_RecreatedModelsInNewSchema.Designer.cs
index 570c6b5..7ecbcb4 100644
--- a/MoonlightServers.ApiServer/Database/Migrations/20250606121013_AddedShares.Designer.cs
+++ b/MoonlightServers.ApiServer/Database/Migrations/20250922091731_RecreatedModelsInNewSchema.Designer.cs
@@ -12,15 +12,16 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
namespace MoonlightServers.ApiServer.Database.Migrations
{
[DbContext(typeof(ServersDataContext))]
- [Migration("20250606121013_AddedShares")]
- partial class AddedShares
+ [Migration("20250922091731_RecreatedModelsInNewSchema")]
+ partial class RecreatedModelsInNewSchema
{
///
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
- .HasAnnotation("ProductVersion", "9.0.5")
+ .HasDefaultSchema("servers")
+ .HasAnnotation("ProductVersion", "9.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
@@ -52,7 +53,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasIndex("ServerId");
- b.ToTable("Servers_Allocations", (string)null);
+ b.ToTable("Allocations", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Node", b =>
@@ -63,12 +64,6 @@ namespace MoonlightServers.ApiServer.Database.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
- b.Property("EnableDynamicFirewall")
- .HasColumnType("boolean");
-
- b.Property("EnableTransparentMode")
- .HasColumnType("boolean");
-
b.Property("Fqdn")
.IsRequired()
.HasColumnType("text");
@@ -96,7 +91,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasKey("Id");
- b.ToTable("Servers_Nodes", (string)null);
+ b.ToTable("Nodes", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Server", b =>
@@ -107,9 +102,6 @@ namespace MoonlightServers.ApiServer.Database.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
- b.Property("Bandwidth")
- .HasColumnType("integer");
-
b.Property("Cpu")
.HasColumnType("integer");
@@ -138,16 +130,13 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.Property("StartupOverride")
.HasColumnType("text");
- b.Property("UseVirtualDisk")
- .HasColumnType("boolean");
-
b.HasKey("Id");
b.HasIndex("NodeId");
b.HasIndex("StarId");
- b.ToTable("Servers_Servers", (string)null);
+ b.ToTable("Servers", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.ServerBackup", b =>
@@ -180,7 +169,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasIndex("ServerId");
- b.ToTable("Servers_ServerBackups", (string)null);
+ b.ToTable("ServerBackups", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.ServerShare", b =>
@@ -207,7 +196,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasIndex("ServerId");
- b.ToTable("Servers_ServerShares", (string)null);
+ b.ToTable("ServerShares", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.ServerVariable", b =>
@@ -233,7 +222,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasIndex("ServerId");
- b.ToTable("Servers_ServerVariables", (string)null);
+ b.ToTable("ServerVariables", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Star", b =>
@@ -301,7 +290,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasKey("Id");
- b.ToTable("Servers_Stars", (string)null);
+ b.ToTable("Stars", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.StarDockerImage", b =>
@@ -330,7 +319,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasIndex("StarId");
- b.ToTable("Servers_StarDockerImages", (string)null);
+ b.ToTable("StarDockerImages", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.StarVariable", b =>
@@ -376,7 +365,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasIndex("StarId");
- b.ToTable("Servers_StarVariables", (string)null);
+ b.ToTable("StarVariables", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Allocation", b =>
@@ -437,14 +426,14 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b1.HasKey("ServerShareId");
- b1.ToTable("Servers_ServerShares");
+ b1.ToTable("ServerShares", "servers");
b1.ToJson("Content");
b1.WithOwner()
.HasForeignKey("ServerShareId");
- b1.OwnsMany("MoonlightServers.ApiServer.Models.ServerSharePermission", "Permissions", b2 =>
+ b1.OwnsMany("MoonlightServers.ApiServer.Models.ServerShareContent+SharePermission", "Permissions", b2 =>
{
b2.Property("ServerShareContentServerShareId")
.HasColumnType("integer");
@@ -453,16 +442,16 @@ namespace MoonlightServers.ApiServer.Database.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("integer");
- b2.Property("Name")
+ b2.Property("Identifier")
.IsRequired()
.HasColumnType("text");
- b2.Property("Type")
+ b2.Property("Level")
.HasColumnType("integer");
b2.HasKey("ServerShareContentServerShareId", "__synthesizedOrdinal");
- b2.ToTable("Servers_ServerShares");
+ b2.ToTable("ServerShares", "servers");
b2.WithOwner()
.HasForeignKey("ServerShareContentServerShareId");
diff --git a/MoonlightServers.ApiServer/Database/Migrations/20250226210232_RecreatedMigrationsForPostgresql.cs b/MoonlightServers.ApiServer/Database/Migrations/20250922091731_RecreatedModelsInNewSchema.cs
similarity index 64%
rename from MoonlightServers.ApiServer/Database/Migrations/20250226210232_RecreatedMigrationsForPostgresql.cs
rename to MoonlightServers.ApiServer/Database/Migrations/20250922091731_RecreatedModelsInNewSchema.cs
index cf9b503..facb456 100644
--- a/MoonlightServers.ApiServer/Database/Migrations/20250226210232_RecreatedMigrationsForPostgresql.cs
+++ b/MoonlightServers.ApiServer/Database/Migrations/20250922091731_RecreatedModelsInNewSchema.cs
@@ -7,13 +7,17 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
namespace MoonlightServers.ApiServer.Database.Migrations
{
///
- public partial class RecreatedMigrationsForPostgresql : Migration
+ public partial class RecreatedModelsInNewSchema : Migration
{
///
protected override void Up(MigrationBuilder migrationBuilder)
{
+ migrationBuilder.EnsureSchema(
+ name: "servers");
+
migrationBuilder.CreateTable(
- name: "Servers_Nodes",
+ name: "Nodes",
+ schema: "servers",
columns: table => new
{
Id = table.Column(type: "integer", nullable: false)
@@ -21,19 +25,19 @@ namespace MoonlightServers.ApiServer.Database.Migrations
Name = table.Column(type: "text", nullable: false),
Fqdn = table.Column(type: "text", nullable: false),
Token = table.Column(type: "text", nullable: false),
+ TokenId = table.Column(type: "text", nullable: false),
HttpPort = table.Column(type: "integer", nullable: false),
FtpPort = table.Column(type: "integer", nullable: false),
- UseSsl = table.Column(type: "boolean", nullable: false),
- EnableTransparentMode = table.Column(type: "boolean", nullable: false),
- EnableDynamicFirewall = table.Column(type: "boolean", nullable: false)
+ UseSsl = table.Column(type: "boolean", nullable: false)
},
constraints: table =>
{
- table.PrimaryKey("PK_Servers_Nodes", x => x.Id);
+ table.PrimaryKey("PK_Nodes", x => x.Id);
});
migrationBuilder.CreateTable(
- name: "Servers_Stars",
+ name: "Stars",
+ schema: "servers",
columns: table => new
{
Id = table.Column(type: "integer", nullable: false)
@@ -56,11 +60,12 @@ namespace MoonlightServers.ApiServer.Database.Migrations
},
constraints: table =>
{
- table.PrimaryKey("PK_Servers_Stars", x => x.Id);
+ table.PrimaryKey("PK_Stars", x => x.Id);
});
migrationBuilder.CreateTable(
- name: "Servers_Servers",
+ name: "Servers",
+ schema: "servers",
columns: table => new
{
Id = table.Column(type: "integer", nullable: false)
@@ -73,29 +78,30 @@ namespace MoonlightServers.ApiServer.Database.Migrations
DockerImageIndex = table.Column(type: "integer", nullable: false),
Cpu = table.Column(type: "integer", nullable: false),
Memory = table.Column(type: "integer", nullable: false),
- Disk = table.Column(type: "integer", nullable: false),
- UseVirtualDisk = table.Column(type: "boolean", nullable: false),
- Bandwidth = table.Column(type: "integer", nullable: false)
+ Disk = table.Column(type: "integer", nullable: false)
},
constraints: table =>
{
- table.PrimaryKey("PK_Servers_Servers", x => x.Id);
+ table.PrimaryKey("PK_Servers", x => x.Id);
table.ForeignKey(
- name: "FK_Servers_Servers_Servers_Nodes_NodeId",
+ name: "FK_Servers_Nodes_NodeId",
column: x => x.NodeId,
- principalTable: "Servers_Nodes",
+ principalSchema: "servers",
+ principalTable: "Nodes",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
- name: "FK_Servers_Servers_Servers_Stars_StarId",
+ name: "FK_Servers_Stars_StarId",
column: x => x.StarId,
- principalTable: "Servers_Stars",
+ principalSchema: "servers",
+ principalTable: "Stars",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
- name: "Servers_StarDockerImages",
+ name: "StarDockerImages",
+ schema: "servers",
columns: table => new
{
Id = table.Column(type: "integer", nullable: false)
@@ -107,17 +113,19 @@ namespace MoonlightServers.ApiServer.Database.Migrations
},
constraints: table =>
{
- table.PrimaryKey("PK_Servers_StarDockerImages", x => x.Id);
+ table.PrimaryKey("PK_StarDockerImages", x => x.Id);
table.ForeignKey(
- name: "FK_Servers_StarDockerImages_Servers_Stars_StarId",
+ name: "FK_StarDockerImages_Stars_StarId",
column: x => x.StarId,
- principalTable: "Servers_Stars",
+ principalSchema: "servers",
+ principalTable: "Stars",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
- name: "Servers_StarVariables",
+ name: "StarVariables",
+ schema: "servers",
columns: table => new
{
Id = table.Column(type: "integer", nullable: false)
@@ -134,17 +142,19 @@ namespace MoonlightServers.ApiServer.Database.Migrations
},
constraints: table =>
{
- table.PrimaryKey("PK_Servers_StarVariables", x => x.Id);
+ table.PrimaryKey("PK_StarVariables", x => x.Id);
table.ForeignKey(
- name: "FK_Servers_StarVariables_Servers_Stars_StarId",
+ name: "FK_StarVariables_Stars_StarId",
column: x => x.StarId,
- principalTable: "Servers_Stars",
+ principalSchema: "servers",
+ principalTable: "Stars",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
- name: "Servers_Allocations",
+ name: "Allocations",
+ schema: "servers",
columns: table => new
{
Id = table.Column(type: "integer", nullable: false)
@@ -156,22 +166,25 @@ namespace MoonlightServers.ApiServer.Database.Migrations
},
constraints: table =>
{
- table.PrimaryKey("PK_Servers_Allocations", x => x.Id);
+ table.PrimaryKey("PK_Allocations", x => x.Id);
table.ForeignKey(
- name: "FK_Servers_Allocations_Servers_Nodes_NodeId",
+ name: "FK_Allocations_Nodes_NodeId",
column: x => x.NodeId,
- principalTable: "Servers_Nodes",
+ principalSchema: "servers",
+ principalTable: "Nodes",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
- name: "FK_Servers_Allocations_Servers_Servers_ServerId",
+ name: "FK_Allocations_Servers_ServerId",
column: x => x.ServerId,
- principalTable: "Servers_Servers",
+ principalSchema: "servers",
+ principalTable: "Servers",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
- name: "Servers_ServerBackups",
+ name: "ServerBackups",
+ schema: "servers",
columns: table => new
{
Id = table.Column(type: "integer", nullable: false)
@@ -185,16 +198,43 @@ namespace MoonlightServers.ApiServer.Database.Migrations
},
constraints: table =>
{
- table.PrimaryKey("PK_Servers_ServerBackups", x => x.Id);
+ table.PrimaryKey("PK_ServerBackups", x => x.Id);
table.ForeignKey(
- name: "FK_Servers_ServerBackups_Servers_Servers_ServerId",
+ name: "FK_ServerBackups_Servers_ServerId",
column: x => x.ServerId,
- principalTable: "Servers_Servers",
+ principalSchema: "servers",
+ principalTable: "Servers",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
- name: "Servers_ServerVariables",
+ name: "ServerShares",
+ schema: "servers",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ UserId = table.Column(type: "integer", nullable: false),
+ ServerId = table.Column(type: "integer", nullable: false),
+ CreatedAt = table.Column(type: "timestamp with time zone", nullable: false),
+ UpdatedAt = table.Column(type: "timestamp with time zone", nullable: false),
+ Content = table.Column(type: "jsonb", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_ServerShares", x => x.Id);
+ table.ForeignKey(
+ name: "FK_ServerShares_Servers_ServerId",
+ column: x => x.ServerId,
+ principalSchema: "servers",
+ principalTable: "Servers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "ServerVariables",
+ schema: "servers",
columns: table => new
{
Id = table.Column(type: "integer", nullable: false)
@@ -205,53 +245,68 @@ namespace MoonlightServers.ApiServer.Database.Migrations
},
constraints: table =>
{
- table.PrimaryKey("PK_Servers_ServerVariables", x => x.Id);
+ table.PrimaryKey("PK_ServerVariables", x => x.Id);
table.ForeignKey(
- name: "FK_Servers_ServerVariables_Servers_Servers_ServerId",
+ name: "FK_ServerVariables_Servers_ServerId",
column: x => x.ServerId,
- principalTable: "Servers_Servers",
+ principalSchema: "servers",
+ principalTable: "Servers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
- name: "IX_Servers_Allocations_NodeId",
- table: "Servers_Allocations",
+ name: "IX_Allocations_NodeId",
+ schema: "servers",
+ table: "Allocations",
column: "NodeId");
migrationBuilder.CreateIndex(
- name: "IX_Servers_Allocations_ServerId",
- table: "Servers_Allocations",
+ name: "IX_Allocations_ServerId",
+ schema: "servers",
+ table: "Allocations",
column: "ServerId");
migrationBuilder.CreateIndex(
- name: "IX_Servers_ServerBackups_ServerId",
- table: "Servers_ServerBackups",
+ name: "IX_ServerBackups_ServerId",
+ schema: "servers",
+ table: "ServerBackups",
column: "ServerId");
migrationBuilder.CreateIndex(
- name: "IX_Servers_Servers_NodeId",
- table: "Servers_Servers",
+ name: "IX_Servers_NodeId",
+ schema: "servers",
+ table: "Servers",
column: "NodeId");
migrationBuilder.CreateIndex(
- name: "IX_Servers_Servers_StarId",
- table: "Servers_Servers",
+ name: "IX_Servers_StarId",
+ schema: "servers",
+ table: "Servers",
column: "StarId");
migrationBuilder.CreateIndex(
- name: "IX_Servers_ServerVariables_ServerId",
- table: "Servers_ServerVariables",
+ name: "IX_ServerShares_ServerId",
+ schema: "servers",
+ table: "ServerShares",
column: "ServerId");
migrationBuilder.CreateIndex(
- name: "IX_Servers_StarDockerImages_StarId",
- table: "Servers_StarDockerImages",
+ name: "IX_ServerVariables_ServerId",
+ schema: "servers",
+ table: "ServerVariables",
+ column: "ServerId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_StarDockerImages_StarId",
+ schema: "servers",
+ table: "StarDockerImages",
column: "StarId");
migrationBuilder.CreateIndex(
- name: "IX_Servers_StarVariables_StarId",
- table: "Servers_StarVariables",
+ name: "IX_StarVariables_StarId",
+ schema: "servers",
+ table: "StarVariables",
column: "StarId");
}
@@ -259,28 +314,40 @@ namespace MoonlightServers.ApiServer.Database.Migrations
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
- name: "Servers_Allocations");
+ name: "Allocations",
+ schema: "servers");
migrationBuilder.DropTable(
- name: "Servers_ServerBackups");
+ name: "ServerBackups",
+ schema: "servers");
migrationBuilder.DropTable(
- name: "Servers_ServerVariables");
+ name: "ServerShares",
+ schema: "servers");
migrationBuilder.DropTable(
- name: "Servers_StarDockerImages");
+ name: "ServerVariables",
+ schema: "servers");
migrationBuilder.DropTable(
- name: "Servers_StarVariables");
+ name: "StarDockerImages",
+ schema: "servers");
migrationBuilder.DropTable(
- name: "Servers_Servers");
+ name: "StarVariables",
+ schema: "servers");
migrationBuilder.DropTable(
- name: "Servers_Nodes");
+ name: "Servers",
+ schema: "servers");
migrationBuilder.DropTable(
- name: "Servers_Stars");
+ name: "Nodes",
+ schema: "servers");
+
+ migrationBuilder.DropTable(
+ name: "Stars",
+ schema: "servers");
}
}
}
diff --git a/MoonlightServers.ApiServer/Database/Migrations/ServersDataContextModelSnapshot.cs b/MoonlightServers.ApiServer/Database/Migrations/ServersDataContextModelSnapshot.cs
index e136036..da45a02 100644
--- a/MoonlightServers.ApiServer/Database/Migrations/ServersDataContextModelSnapshot.cs
+++ b/MoonlightServers.ApiServer/Database/Migrations/ServersDataContextModelSnapshot.cs
@@ -17,7 +17,8 @@ namespace MoonlightServers.ApiServer.Database.Migrations
{
#pragma warning disable 612, 618
modelBuilder
- .HasAnnotation("ProductVersion", "9.0.5")
+ .HasDefaultSchema("servers")
+ .HasAnnotation("ProductVersion", "9.0.9")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
@@ -49,7 +50,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasIndex("ServerId");
- b.ToTable("Servers_Allocations", (string)null);
+ b.ToTable("Allocations", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Node", b =>
@@ -60,12 +61,6 @@ namespace MoonlightServers.ApiServer.Database.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
- b.Property("EnableDynamicFirewall")
- .HasColumnType("boolean");
-
- b.Property("EnableTransparentMode")
- .HasColumnType("boolean");
-
b.Property("Fqdn")
.IsRequired()
.HasColumnType("text");
@@ -93,7 +88,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasKey("Id");
- b.ToTable("Servers_Nodes", (string)null);
+ b.ToTable("Nodes", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Server", b =>
@@ -104,9 +99,6 @@ namespace MoonlightServers.ApiServer.Database.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
- b.Property("Bandwidth")
- .HasColumnType("integer");
-
b.Property("Cpu")
.HasColumnType("integer");
@@ -135,16 +127,13 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.Property("StartupOverride")
.HasColumnType("text");
- b.Property("UseVirtualDisk")
- .HasColumnType("boolean");
-
b.HasKey("Id");
b.HasIndex("NodeId");
b.HasIndex("StarId");
- b.ToTable("Servers_Servers", (string)null);
+ b.ToTable("Servers", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.ServerBackup", b =>
@@ -177,7 +166,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasIndex("ServerId");
- b.ToTable("Servers_ServerBackups", (string)null);
+ b.ToTable("ServerBackups", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.ServerShare", b =>
@@ -204,7 +193,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasIndex("ServerId");
- b.ToTable("Servers_ServerShares", (string)null);
+ b.ToTable("ServerShares", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.ServerVariable", b =>
@@ -230,7 +219,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasIndex("ServerId");
- b.ToTable("Servers_ServerVariables", (string)null);
+ b.ToTable("ServerVariables", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Star", b =>
@@ -298,7 +287,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasKey("Id");
- b.ToTable("Servers_Stars", (string)null);
+ b.ToTable("Stars", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.StarDockerImage", b =>
@@ -327,7 +316,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasIndex("StarId");
- b.ToTable("Servers_StarDockerImages", (string)null);
+ b.ToTable("StarDockerImages", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.StarVariable", b =>
@@ -373,7 +362,7 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b.HasIndex("StarId");
- b.ToTable("Servers_StarVariables", (string)null);
+ b.ToTable("StarVariables", "servers");
});
modelBuilder.Entity("MoonlightServers.ApiServer.Database.Entities.Allocation", b =>
@@ -434,14 +423,14 @@ namespace MoonlightServers.ApiServer.Database.Migrations
b1.HasKey("ServerShareId");
- b1.ToTable("Servers_ServerShares");
+ b1.ToTable("ServerShares", "servers");
b1.ToJson("Content");
b1.WithOwner()
.HasForeignKey("ServerShareId");
- b1.OwnsMany("MoonlightServers.ApiServer.Models.ServerSharePermission", "Permissions", b2 =>
+ b1.OwnsMany("MoonlightServers.ApiServer.Models.ServerShareContent+SharePermission", "Permissions", b2 =>
{
b2.Property("ServerShareContentServerShareId")
.HasColumnType("integer");
@@ -450,16 +439,16 @@ namespace MoonlightServers.ApiServer.Database.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("integer");
- b2.Property("Name")
+ b2.Property("Identifier")
.IsRequired()
.HasColumnType("text");
- b2.Property("Type")
+ b2.Property("Level")
.HasColumnType("integer");
b2.HasKey("ServerShareContentServerShareId", "__synthesizedOrdinal");
- b2.ToTable("Servers_ServerShares");
+ b2.ToTable("ServerShares", "servers");
b2.WithOwner()
.HasForeignKey("ServerShareContentServerShareId");
diff --git a/MoonlightServers.ApiServer/Database/ServersDataContext.cs b/MoonlightServers.ApiServer/Database/ServersDataContext.cs
index 498852f..696e9e1 100644
--- a/MoonlightServers.ApiServer/Database/ServersDataContext.cs
+++ b/MoonlightServers.ApiServer/Database/ServersDataContext.cs
@@ -1,17 +1,12 @@
-using System.Text.Json;
using Microsoft.EntityFrameworkCore;
-using MoonCore.Extended.SingleDb;
using Moonlight.ApiServer.Configuration;
using MoonlightServers.ApiServer.Database.Entities;
using MoonlightServers.ApiServer.Models;
-using MoonlightServers.Shared.Models;
namespace MoonlightServers.ApiServer.Database;
-public class ServersDataContext : DatabaseContext
+public class ServersDataContext : DbContext
{
- public override string Prefix { get; } = "Servers";
-
public DbSet Allocations { get; set; }
public DbSet Nodes { get; set; }
public DbSet Servers { get; set; }
@@ -22,20 +17,37 @@ public class ServersDataContext : DatabaseContext
public DbSet StarDockerImages { get; set; }
public DbSet StarVariables { get; set; }
+ private readonly AppConfiguration Configuration;
+ private readonly string Schema = "servers";
+
public ServersDataContext(AppConfiguration configuration)
{
- Options = new()
+ Configuration = configuration;
+ }
+
+ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+ {
+ if(optionsBuilder.IsConfigured)
+ return;
+
+ var database = Configuration.Database;
+
+ var connectionString = $"Host={database.Host};" +
+ $"Port={database.Port};" +
+ $"Database={database.Database};" +
+ $"Username={database.Username};" +
+ $"Password={database.Password}";
+
+ optionsBuilder.UseNpgsql(connectionString, builder =>
{
- Host = configuration.Database.Host,
- Port = configuration.Database.Port,
- Username = configuration.Database.Username,
- Password = configuration.Database.Password,
- Database = configuration.Database.Database
- };
+ builder.MigrationsHistoryTable("MigrationsHistory", Schema);
+ });
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
+ modelBuilder.Model.SetDefaultSchema(Schema);
+
base.OnModelCreating(modelBuilder);
#region Shares
diff --git a/MoonlightServers.ApiServer/Extensions/ServerStateExtensions.cs b/MoonlightServers.ApiServer/Extensions/ServerStateExtensions.cs
index 71b000f..ea2b732 100644
--- a/MoonlightServers.ApiServer/Extensions/ServerStateExtensions.cs
+++ b/MoonlightServers.ApiServer/Extensions/ServerStateExtensions.cs
@@ -1,5 +1,3 @@
-using MoonlightServers.DaemonShared.Enums;
-using MoonlightServers.Shared.Enums;
using ServerState = MoonlightServers.Shared.Enums.ServerState;
namespace MoonlightServers.ApiServer.Extensions;
diff --git a/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeAllocationsController.cs b/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeAllocationsController.cs
index 098ece0..15f3287 100644
--- a/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeAllocationsController.cs
+++ b/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeAllocationsController.cs
@@ -1,9 +1,7 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
-using MoonCore.Exceptions;
using MoonCore.Extended.Abstractions;
-using MoonCore.Extended.Models;
using MoonCore.Models;
using MoonlightServers.ApiServer.Database.Entities;
using MoonlightServers.ApiServer.Mappers;
@@ -30,38 +28,39 @@ public class NodeAllocationsController : Controller
[HttpGet]
[Authorize(Policy = "permissions:admin.servers.nodes.get")]
- public async Task>> Get(
+ public async Task>> GetAsync(
[FromRoute] int nodeId,
- [FromQuery] PagedOptions options
+ [FromQuery] int startIndex,
+ [FromQuery] int count
)
{
- var count = await AllocationRepository
+ if (count > 100)
+ return Problem("Only 100 items can be fetched at a time", statusCode: 400);
+
+ var totalCount = await AllocationRepository
.Get()
.CountAsync(x => x.Node.Id == nodeId);
var allocations = await AllocationRepository
.Get()
.OrderBy(x => x.Id)
- .Skip(options.Page * options.PageSize)
- .Take(options.PageSize)
+ .Skip(startIndex)
+ .Take(count)
.Where(x => x.Node.Id == nodeId)
.AsNoTracking()
.ProjectToAdminResponse()
.ToArrayAsync();
- return new PagedData()
+ return new CountedData()
{
Items = allocations,
- CurrentPage = options.Page,
- PageSize = options.PageSize,
- TotalItems = count,
- TotalPages = (int)Math.Ceiling(Math.Max(0, count) / (double)options.PageSize)
+ TotalCount = totalCount
};
}
[HttpGet("{id:int}")]
[Authorize(Policy = "permissions:admin.servers.nodes.get")]
- public async Task> GetSingle([FromRoute] int nodeId, [FromRoute] int id)
+ public async Task> GetSingleAsync([FromRoute] int nodeId, [FromRoute] int id)
{
var allocation = await AllocationRepository
.Get()
@@ -78,7 +77,7 @@ public class NodeAllocationsController : Controller
[HttpPost]
[Authorize(Policy = "permissions:admin.servers.nodes.create")]
- public async Task> Create(
+ public async Task> CreateAsync(
[FromRoute] int nodeId,
[FromBody] CreateNodeAllocationRequest request
)
@@ -92,13 +91,13 @@ public class NodeAllocationsController : Controller
var allocation = AllocationMapper.ToAllocation(request);
- var finalAllocation = await AllocationRepository.Add(allocation);
+ var finalAllocation = await AllocationRepository.AddAsync(allocation);
return AllocationMapper.ToNodeAllocation(finalAllocation);
}
[HttpPatch("{id:int}")]
- public async Task> Update(
+ public async Task> UpdateAsync(
[FromRoute] int nodeId,
[FromRoute] int id,
[FromBody] UpdateNodeAllocationRequest request
@@ -113,13 +112,13 @@ public class NodeAllocationsController : Controller
return Problem("No allocation with that id found", statusCode: 404);
AllocationMapper.Merge(request, allocation);
- await AllocationRepository.Update(allocation);
+ await AllocationRepository.UpdateAsync(allocation);
return AllocationMapper.ToNodeAllocation(allocation);
}
[HttpDelete("{id:int}")]
- public async Task Delete([FromRoute] int nodeId, [FromRoute] int id)
+ public async Task DeleteAsync([FromRoute] int nodeId, [FromRoute] int id)
{
var allocation = await AllocationRepository
.Get()
@@ -129,12 +128,12 @@ public class NodeAllocationsController : Controller
if (allocation == null)
return Problem("No allocation with that id found", statusCode: 404);
- await AllocationRepository.Remove(allocation);
+ await AllocationRepository.RemoveAsync(allocation);
return NoContent();
}
[HttpPost("range")]
- public async Task CreateRange(
+ public async Task CreateRangeAsync(
[FromRoute] int nodeId,
[FromBody] CreateNodeAllocationRangeRequest request
)
@@ -179,58 +178,60 @@ public class NodeAllocationsController : Controller
})
.ToArray();
- await AllocationRepository.RunTransaction(async set => { await set.AddRangeAsync(allocations); });
+ await AllocationRepository.RunTransactionAsync(async set => { await set.AddRangeAsync(allocations); });
return NoContent();
}
[HttpDelete("all")]
- public async Task DeleteAll([FromRoute] int nodeId)
+ public async Task DeleteAllAsync([FromRoute] int nodeId)
{
var allocations = AllocationRepository
.Get()
.Where(x => x.Node.Id == nodeId)
.ToArray();
- await AllocationRepository.RunTransaction(set => { set.RemoveRange(allocations); });
+ await AllocationRepository.RunTransactionAsync(set => { set.RemoveRange(allocations); });
return NoContent();
}
[HttpGet("free")]
[Authorize(Policy = "permissions:admin.servers.nodes.get")]
- public async Task> GetFree(
+ public async Task>> GetFreeAsync(
[FromRoute] int nodeId,
- [FromQuery] PagedOptions options,
+ [FromQuery] int startIndex,
+ [FromQuery] int count,
[FromQuery] int serverId = -1
)
{
+ if (count > 100)
+ return Problem("Only 100 items can be fetched at a time", statusCode: 400);
+
var node = NodeRepository
.Get()
.FirstOrDefault(x => x.Id == nodeId);
if (node == null)
- throw new HttpApiException("A node with this id could not be found", 404);
+ return Problem("A node with this id could not be found", statusCode: 404);
var freeAllocationsQuery = AllocationRepository
.Get()
+ .OrderBy(x => x.Id)
.Where(x => x.Node.Id == node.Id)
.Where(x => x.Server == null || x.Server.Id == serverId);
- var count = await freeAllocationsQuery.CountAsync();
+ var totalCount = await freeAllocationsQuery.CountAsync();
var allocations = await freeAllocationsQuery
- .Skip(options.Page * options.PageSize)
- .Take(options.PageSize)
+ .Skip(startIndex)
+ .Take(count)
.AsNoTracking()
.ProjectToAdminResponse()
.ToArrayAsync();
- return new PagedData()
+ return new CountedData()
{
Items = allocations,
- CurrentPage = options.Page,
- PageSize = options.PageSize,
- TotalItems = count,
- TotalPages = (int)Math.Ceiling(Math.Max(0, count) / (double)options.PageSize)
+ TotalCount = totalCount
};
}
}
\ No newline at end of file
diff --git a/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeStatusController.cs b/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeStatusController.cs
index 74f55a4..2a1130b 100644
--- a/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeStatusController.cs
+++ b/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeStatusController.cs
@@ -1,6 +1,5 @@
using System.Diagnostics;
using Microsoft.AspNetCore.Mvc;
-using MoonCore.Exceptions;
using MoonCore.Extended.Abstractions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.EntityFrameworkCore;
@@ -25,9 +24,9 @@ public class NodeStatusController : Controller
[HttpGet("{nodeId:int}/system/status")]
[Authorize(Policy = "permissions:admin.servers.nodes.status")]
- public async Task> GetStatus([FromRoute] int nodeId)
+ public async Task> GetStatusAsync([FromRoute] int nodeId)
{
- var node = await GetNode(nodeId);
+ var node = await GetNodeAsync(nodeId);
if (node.Value == null)
return node.Result ?? Problem("Unable to retrieve node");
@@ -39,7 +38,7 @@ public class NodeStatusController : Controller
try
{
- var statusResponse = await NodeService.GetSystemStatus(node.Value);
+ var statusResponse = await NodeService.GetSystemStatusAsync(node.Value);
sw.Stop();
@@ -69,7 +68,7 @@ public class NodeStatusController : Controller
return response;
}
- private async Task> GetNode(int nodeId)
+ private async Task> GetNodeAsync(int nodeId)
{
var result = await NodeRepository
.Get()
diff --git a/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodesController.cs b/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodesController.cs
index b17b958..d80d6b4 100644
--- a/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodesController.cs
+++ b/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodesController.cs
@@ -1,10 +1,7 @@
-using System.ComponentModel.DataAnnotations;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using MoonCore.Extended.Abstractions;
using Microsoft.AspNetCore.Authorization;
-using MoonCore.Exceptions;
-using MoonCore.Extended.Models;
using MoonCore.Helpers;
using MoonCore.Models;
using MoonlightServers.ApiServer.Database.Entities;
@@ -27,32 +24,35 @@ public class NodesController : Controller
[HttpGet]
[Authorize(Policy = "permissions:admin.servers.nodes.get")]
- public async Task> Get([FromQuery] PagedOptions options)
+ public async Task>> GetAsync(
+ [FromQuery] int startIndex,
+ [FromQuery] int count
+ )
{
- var count = await NodeRepository.Get().CountAsync();
+ if (count > 100)
+ return Problem("Only 100 items can be fetched at a time", statusCode: 400);
+
+ var totalCount = await NodeRepository.Get().CountAsync();
var items = await NodeRepository
.Get()
.OrderBy(x => x.Id)
- .Skip(options.Page * options.PageSize)
- .Take(options.PageSize)
+ .Skip(startIndex)
+ .Take(count)
.AsNoTracking()
.ProjectToAdminResponse()
.ToArrayAsync();
- return new PagedData()
+ return new CountedData()
{
Items = items,
- CurrentPage = options.Page,
- PageSize = options.PageSize,
- TotalItems = count,
- TotalPages = (int)Math.Ceiling(Math.Max(0, count) / (double)options.PageSize)
+ TotalCount = totalCount
};
}
[HttpGet("{id:int}")]
[Authorize(Policy = "permissions:admin.servers.nodes.get")]
- public async Task> GetSingle([FromRoute] int id)
+ public async Task> GetSingleAsync([FromRoute] int id)
{
var node = await NodeRepository
.Get()
@@ -62,27 +62,27 @@ public class NodesController : Controller
if (node == null)
return Problem("No node with this id found", statusCode: 404);
-
+
return node;
}
[HttpPost]
[Authorize(Policy = "permissions:admin.servers.nodes.create")]
- public async Task