From e7b1e77d0ada0a7792ef0840c189324d5ed12f2d Mon Sep 17 00:00:00 2001 From: ChiaraBm Date: Thu, 12 Mar 2026 13:00:32 +0000 Subject: [PATCH] Implemented template crud, db entities, import/export, ptero and pelican import --- .../MoonlightServers.Api.Host.csproj | 4 +- .../MoonlightServers.Frontend.Host.csproj | 4 +- .../Styles/styles.css | 12 +- .../Admin/Templates/CrudController.cs | 173 ++++++++++ .../Admin/Templates/DockerImagesController.cs | 144 ++++++++ .../Templates/PelicanEggImportService.cs | 207 ++++++++++++ .../Templates/PterodactylEggImportService.cs | 255 ++++++++++++++ .../Admin/Templates/TemplateMapper.cs | 28 ++ .../Admin/Templates/TemplateTransferModel.cs | 92 +++++ .../Templates/TemplateTransferService.cs | 182 ++++++++++ .../Admin/Templates/TransferController.cs | 88 +++++ .../Admin/Templates/VariablesController.cs | 144 ++++++++ .../Infrastructure/Database/DataContext.cs | 23 ++ .../Database/DbMigrationService.cs | 2 +- .../Database/Entities/Template.cs | 43 +++ .../Database/Entities/TemplateDockerImage.cs | 19 ++ .../Database/Entities/TemplateVariable.cs | 23 ++ .../Database/Json/FilesConfig.cs | 19 ++ .../Database/Json/InstallationConfig.cs | 8 + .../Database/Json/LifecycleConfig.cs | 14 + .../Database/Json/MiscellaneousConfig.cs | 6 + ...12075719_AddedTemplateEntities.Designer.cs | 315 ++++++++++++++++++ .../20260312075719_AddedTemplateEntities.cs | 139 ++++++++ .../Migrations/DataContextModelSnapshot.cs | 247 +++++++++++++- .../MoonlightServers.Api.csproj | 2 + MoonlightServers.Api/Startup.cs | 5 + MoonlightServers.Frontend/Admin/Index.razor | 75 +++++ .../Admin/Nodes/Create.razor | 6 +- .../Admin/Nodes/Edit.razor | 6 +- .../Admin/Nodes/Overview.razor | 4 - .../Templates/ConfigFileMappingEditor.razor | 78 +++++ .../Admin/Templates/ConfigFilesEditor.razor | 76 +++++ .../Admin/Templates/Create.razor | 132 ++++++++ .../Templates/CreateDockerImageDialog.razor | 95 ++++++ .../Templates/CreateVariableDialog.razor | 103 ++++++ .../Templates/DockerImageListEditor.razor | 264 +++++++++++++++ .../Admin/Templates/OnlineTextEditor.razor | 78 +++++ .../Admin/Templates/Overview.razor | 202 +++++++++++ .../Admin/Templates/ScriptEditor.razor | 16 + .../Templates/StartupCommandEditor.razor | 78 +++++ .../Admin/Templates/TemplateMapper.cs | 13 + .../Admin/Templates/Update.razor | 297 +++++++++++++++++ .../Admin/Templates/VariableEditor.razor | 147 ++++++++ .../Admin/Templates/VariableListEditor.razor | 77 +++++ .../Infrastructure/PermissionProvider.cs | 12 + .../Infrastructure/SidebarProvider.cs | 2 +- .../MoonlightServers.Frontend.csproj | 1 + .../Admin/Templates/CreateDockerImageDto.cs | 14 + .../Admin/Templates/CreateTemplateDto.cs | 24 ++ .../Admin/Templates/CreateVariableDto.cs | 18 + .../Admin/Templates/DetailedTemplateDto.cs | 17 + .../Admin/Templates/DockerImageDto.cs | 8 + .../Admin/Templates/FilesConfigDto.cs | 20 ++ .../Admin/Templates/InstallationConfigDto.cs | 3 + .../Admin/Templates/LifecycleConfigDto.cs | 4 + .../Admin/Templates/MiscellaneousConfigDto.cs | 3 + .../Admin/Templates/TemplateDto.cs | 11 + .../Admin/Templates/UpdateDockerImageDto.cs | 14 + .../Admin/Templates/UpdateFilesConfigDto.cs | 27 ++ .../Templates/UpdateInstallationConfigDto.cs | 15 + .../Templates/UpdateLifecycleConfigDto.cs | 22 ++ .../Templates/UpdateMiscellaneousConfigDto.cs | 6 + .../Admin/Templates/UpdateTemplateDto.cs | 32 ++ .../Admin/Templates/UpdateVariableDto.cs | 18 + .../Admin/Templates/VariableDto.cs | 9 + .../MoonlightServers.Shared.csproj | 27 ++ MoonlightServers.Shared/Permissions.cs | 23 +- .../SerializationContext.cs | 18 + 68 files changed, 4269 insertions(+), 24 deletions(-) create mode 100644 MoonlightServers.Api/Admin/Templates/CrudController.cs create mode 100644 MoonlightServers.Api/Admin/Templates/DockerImagesController.cs create mode 100644 MoonlightServers.Api/Admin/Templates/PelicanEggImportService.cs create mode 100644 MoonlightServers.Api/Admin/Templates/PterodactylEggImportService.cs create mode 100644 MoonlightServers.Api/Admin/Templates/TemplateMapper.cs create mode 100644 MoonlightServers.Api/Admin/Templates/TemplateTransferModel.cs create mode 100644 MoonlightServers.Api/Admin/Templates/TemplateTransferService.cs create mode 100644 MoonlightServers.Api/Admin/Templates/TransferController.cs create mode 100644 MoonlightServers.Api/Admin/Templates/VariablesController.cs create mode 100644 MoonlightServers.Api/Infrastructure/Database/Entities/Template.cs create mode 100644 MoonlightServers.Api/Infrastructure/Database/Entities/TemplateDockerImage.cs create mode 100644 MoonlightServers.Api/Infrastructure/Database/Entities/TemplateVariable.cs create mode 100644 MoonlightServers.Api/Infrastructure/Database/Json/FilesConfig.cs create mode 100644 MoonlightServers.Api/Infrastructure/Database/Json/InstallationConfig.cs create mode 100644 MoonlightServers.Api/Infrastructure/Database/Json/LifecycleConfig.cs create mode 100644 MoonlightServers.Api/Infrastructure/Database/Json/MiscellaneousConfig.cs create mode 100644 MoonlightServers.Api/Infrastructure/Database/Migrations/20260312075719_AddedTemplateEntities.Designer.cs create mode 100644 MoonlightServers.Api/Infrastructure/Database/Migrations/20260312075719_AddedTemplateEntities.cs create mode 100644 MoonlightServers.Frontend/Admin/Index.razor create mode 100644 MoonlightServers.Frontend/Admin/Templates/ConfigFileMappingEditor.razor create mode 100644 MoonlightServers.Frontend/Admin/Templates/ConfigFilesEditor.razor create mode 100644 MoonlightServers.Frontend/Admin/Templates/Create.razor create mode 100644 MoonlightServers.Frontend/Admin/Templates/CreateDockerImageDialog.razor create mode 100644 MoonlightServers.Frontend/Admin/Templates/CreateVariableDialog.razor create mode 100644 MoonlightServers.Frontend/Admin/Templates/DockerImageListEditor.razor create mode 100644 MoonlightServers.Frontend/Admin/Templates/OnlineTextEditor.razor create mode 100644 MoonlightServers.Frontend/Admin/Templates/Overview.razor create mode 100644 MoonlightServers.Frontend/Admin/Templates/ScriptEditor.razor create mode 100644 MoonlightServers.Frontend/Admin/Templates/StartupCommandEditor.razor create mode 100644 MoonlightServers.Frontend/Admin/Templates/TemplateMapper.cs create mode 100644 MoonlightServers.Frontend/Admin/Templates/Update.razor create mode 100644 MoonlightServers.Frontend/Admin/Templates/VariableEditor.razor create mode 100644 MoonlightServers.Frontend/Admin/Templates/VariableListEditor.razor create mode 100644 MoonlightServers.Shared/Admin/Templates/CreateDockerImageDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/CreateTemplateDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/CreateVariableDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/DetailedTemplateDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/DockerImageDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/FilesConfigDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/InstallationConfigDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/LifecycleConfigDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/MiscellaneousConfigDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/TemplateDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/UpdateDockerImageDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/UpdateFilesConfigDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/UpdateInstallationConfigDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/UpdateLifecycleConfigDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/UpdateMiscellaneousConfigDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/UpdateTemplateDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/UpdateVariableDto.cs create mode 100644 MoonlightServers.Shared/Admin/Templates/VariableDto.cs diff --git a/Hosts/MoonlightServers.Api.Host/MoonlightServers.Api.Host.csproj b/Hosts/MoonlightServers.Api.Host/MoonlightServers.Api.Host.csproj index dafcba5..4b8fe6a 100644 --- a/Hosts/MoonlightServers.Api.Host/MoonlightServers.Api.Host.csproj +++ b/Hosts/MoonlightServers.Api.Host/MoonlightServers.Api.Host.csproj @@ -8,9 +8,9 @@ - + - + all runtime; build; native; analyzers; buildtransitive diff --git a/Hosts/MoonlightServers.Frontend.Host/MoonlightServers.Frontend.Host.csproj b/Hosts/MoonlightServers.Frontend.Host/MoonlightServers.Frontend.Host.csproj index 9bc74c0..f3bb0c4 100644 --- a/Hosts/MoonlightServers.Frontend.Host/MoonlightServers.Frontend.Host.csproj +++ b/Hosts/MoonlightServers.Frontend.Host/MoonlightServers.Frontend.Host.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/Hosts/MoonlightServers.Frontend.Host/Styles/styles.css b/Hosts/MoonlightServers.Frontend.Host/Styles/styles.css index 2074f76..a327a22 100644 --- a/Hosts/MoonlightServers.Frontend.Host/Styles/styles.css +++ b/Hosts/MoonlightServers.Frontend.Host/Styles/styles.css @@ -7,13 +7,13 @@ @source "../bin/Moonlight.Frontend/*.map"; -@source "../../../Moonlight.Api/**/*.razor"; -@source "../../../Moonlight.Api/**/*.cs"; -@source "../../../Moonlight.Api/**/*.html"; +@source "../../../MoonlightServers.Api/**/*.razor"; +@source "../../../MoonlightServers.Api/**/*.cs"; +@source "../../../MoonlightServers.Api/**/*.html"; -@source "../../../Moonlight.Frontend/**/*.razor"; -@source "../../../Moonlight.Frontend/**/*.cs"; -@source "../../../Moonlight.Frontend/**/*.html"; +@source "../../../MoonlightServers.Frontend/**/*.razor"; +@source "../../../MoonlightServers.Frontend/**/*.cs"; +@source "../../../MoonlightServers.Frontend/**/*.html"; @custom-variant dark (&:is(.dark *)); diff --git a/MoonlightServers.Api/Admin/Templates/CrudController.cs b/MoonlightServers.Api/Admin/Templates/CrudController.cs new file mode 100644 index 0000000..6d39d5d --- /dev/null +++ b/MoonlightServers.Api/Admin/Templates/CrudController.cs @@ -0,0 +1,173 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Moonlight.Shared.Http.Requests; +using Moonlight.Shared.Http.Responses; +using MoonlightServers.Api.Infrastructure.Database; +using MoonlightServers.Api.Infrastructure.Database.Entities; +using MoonlightServers.Api.Infrastructure.Database.Json; +using MoonlightServers.Shared; +using MoonlightServers.Shared.Admin.Templates; + +namespace MoonlightServers.Api.Admin.Templates; + +[ApiController] +[Route("api/admin/servers/templates")] +public class CrudController : Controller +{ + private readonly DatabaseRepository