Implemented databases

This commit is contained in:
Marcel Baumgartner
2023-04-06 17:30:26 +02:00
parent 06c280704c
commit 4a8605a554
12 changed files with 378 additions and 0 deletions

View File

@@ -43,6 +43,10 @@
pleskException.Message
);
}
else if (exception is NotImplementedException)
{
await AlertService.Error(SmartTranslateService.Translate("This function is not implemented"));
}
else
{
throw exception;

View File

@@ -0,0 +1,135 @@
@using Moonlight.App.Database.Entities
@using Moonlight.App.Models.Forms
@using Moonlight.App.Models.Plesk.Resources
@using Moonlight.App.Services
@inject SmartTranslateService SmartTranslateService
@inject WebsiteService WebsiteService
<div class="card card-flush h-xl-100">
<LazyLoader @ref="LazyLoader" Load="Load">
<div class="card-header">
<span class="card-toolbar">
<div class="mt-4">
<SmartForm Model="Model" OnValidSubmit="OnValidSubmit">
<div class="input-group">
<InputText @bind-Value="Model.Name" type="text" class="form-control" placeholder="@(SmartTranslateService.Translate("Name"))"></InputText>
<InputText @bind-Value="Model.Password" type="password" class="form-control" placeholder="@(SmartTranslateService.Translate("Password"))"></InputText>
<button class="btn btn-primary" type="submit">
<TL>Create</TL>
</button>
</div>
</SmartForm>
</div>
</span>
</div>
<div class="card-body pt-2">
@if (Databases.Any())
{
<div class="accordion" id="databases">
@foreach (var database in Databases)
{
<div class="accordion-item">
<h2 class="accordion-header" id="databases_header_@(database.Id)">
<button class="accordion-button fs-4 fw-semibold" type="button" data-bs-toggle="collapse" data-bs-target="#databases_body_@(database.Id)">
@(database.Name) - @(database.Type.ToUpper())
</button>
</h2>
<div id="databases_body_@(database.Id)" class="accordion-collapse collapse" data-bs-parent="#databases">
<div class="accordion-body">
<div class="mt-7 row fv-row mb-7">
<div class="col-md-3 text-md-start">
<label class="fs-6 fw-semibold form-label mt-3">
<TL>Host</TL>
</label>
</div>
<div class="col-md-9">
<input type="text" class="form-control form-control-solid disabled" disabled="disabled" value="@(Host)">
</div>
</div>
<div class="mt-7 row fv-row mb-7">
<div class="col-md-3 text-md-start">
<label class="fs-6 fw-semibold form-label mt-3">
<TL>Port</TL>
</label>
</div>
<div class="col-md-9">
<input type="text" class="form-control form-control-solid disabled" disabled="disabled" value="@(DatabaseServer.Port)">
</div>
</div>
<div class="mt-7 row fv-row mb-7">
<div class="col-md-3 text-md-start">
<label class="fs-6 fw-semibold form-label mt-3">
<TL>Username</TL>
</label>
</div>
<div class="col-md-9">
<input type="text" class="form-control form-control-solid disabled" disabled="disabled" value="@(database.Name)">
</div>
</div>
<div class="mt-7 row fv-row mb-7">
<div class="col-md-3 text-md-start">
<label class="fs-6 fw-semibold form-label mt-3">
<TL>Database</TL>
</label>
</div>
<div class="col-md-9">
<input type="text" class="form-control form-control-solid disabled" disabled="disabled" value="@(database.Name)">
</div>
</div>
<div class="text-end">
<DeleteButton Confirm="true" OnClick="() => DeleteDatabase(database)" />
</div>
</div>
</div>
</div>
}
</div>
}
else
{
<div class="alert alert-warning">
<TL>No databases found for this website</TL>
</div>
}
</div>
</LazyLoader>
</div>
@code
{
[CascadingParameter]
public Website CurrentWebsite { get; set; }
private LazyLoader LazyLoader;
private Database[] Databases;
private DatabaseServer DatabaseServer;
private string Host;
private DatabaseDataModel Model = new();
private async Task Load(LazyLoader arg)
{
Databases = await WebsiteService.GetDatabases(CurrentWebsite);
if (Databases.Any())
{
DatabaseServer = (await WebsiteService.GetDefaultDatabaseServer(CurrentWebsite))!;
Host = await WebsiteService.GetHost(CurrentWebsite);
}
}
private async Task OnValidSubmit()
{
await WebsiteService.CreateDatabase(CurrentWebsite, Model.Name, Model.Password);
Model = new();
await LazyLoader.Reload();
}
private async Task DeleteDatabase(Database database)
{
await WebsiteService.DeleteDatabase(CurrentWebsite, database);
await LazyLoader.Reload();
}
}