Migrate to HTMX (#114)

Dropped Livewire
Added HTMX
Added Blade code lint
Drop Mysql and Redis
Migrate to SQLite
This commit is contained in:
Saeed Vaziry
2024-03-06 17:02:59 +01:00
committed by GitHub
parent 5b2c419e91
commit b2083fc6b2
486 changed files with 8609 additions and 8707 deletions

View File

@ -24,10 +24,10 @@ public function create($type, Server $server, array $input): Backup
$backup = new Backup([
'type' => $type,
'server_id' => $server->id,
'database_id' => $input['database'] ?? null,
'storage_id' => $input['storage'],
'interval' => $input['interval'] == 'custom' ? $input['custom'] : $input['interval'],
'keep_backups' => $input['keep'],
'database_id' => $input['backup_database'] ?? null,
'storage_id' => $input['backup_storage'],
'interval' => $input['backup_interval'] == 'custom' ? $input['backup_custom'] : $input['backup_interval'],
'keep_backups' => $input['backup_keep'],
'status' => BackupStatus::RUNNING,
]);
$backup->save();
@ -43,16 +43,16 @@ public function create($type, Server $server, array $input): Backup
private function validate($type, Server $server, array $input): void
{
$rules = [
'storage' => [
'backup_storage' => [
'required',
Rule::exists('storage_providers', 'id'),
],
'keep' => [
'backup_keep' => [
'required',
'numeric',
'min:1',
],
'interval' => [
'backup_interval' => [
'required',
Rule::in([
'0 * * * *',
@ -63,13 +63,13 @@ private function validate($type, Server $server, array $input): void
]),
],
];
if ($input['interval'] == 'custom') {
$rules['custom'] = [
if ($input['backup_interval'] == 'custom') {
$rules['backup_custom'] = [
'required',
];
}
if ($type === 'database') {
$rules['database'] = [
$rules['backup_database'] = [
'required',
Rule::exists('databases', 'id')
->where('server_id', $server->id)

View File

@ -2,6 +2,7 @@
namespace App\Actions\Database;
use App\Enums\DatabaseStatus;
use App\Models\Database;
use App\Models\Server;
use Illuminate\Support\Facades\Validator;
@ -22,7 +23,10 @@ public function create(Server $server, array $input): Database
'name' => $input['name'],
]);
$database->save();
$database->createOnServer();
$server->database()->handler()->create($database->name);
$database->status = DatabaseStatus::READY;
$database->save();
return $database;
}

View File

@ -2,6 +2,7 @@
namespace App\Actions\Database;
use App\Enums\DatabaseUserStatus;
use App\Models\DatabaseUser;
use App\Models\Server;
use Illuminate\Support\Facades\Validator;
@ -25,7 +26,18 @@ public function create(Server $server, array $input, array $links = []): Databas
'databases' => $links,
]);
$databaseUser->save();
$databaseUser->createOnServer();
$server->database()->handler()->createUser(
$databaseUser->username,
$databaseUser->password,
$databaseUser->host
);
$databaseUser->status = DatabaseUserStatus::READY;
$databaseUser->save();
if (count($databaseUser->databases) > 0) {
app(LinkUser::class)->link($databaseUser, $databaseUser->databases);
}
return $databaseUser;
}

View File

@ -0,0 +1,15 @@
<?php
namespace App\Actions\Database;
use App\Models\Database;
use App\Models\Server;
class DeleteDatabase
{
public function delete(Server $server, Database $database): void
{
$server->database()->handler()->delete($database->name);
$database->delete();
}
}

View File

@ -0,0 +1,15 @@
<?php
namespace App\Actions\Database;
use App\Models\DatabaseUser;
use App\Models\Server;
class DeleteDatabaseUser
{
public function delete(Server $server, DatabaseUser $databaseUser): void
{
$server->database()->handler()->deleteUser($databaseUser->username, $databaseUser->host);
$databaseUser->delete();
}
}

View File

@ -4,6 +4,9 @@
use App\Models\Database;
use App\Models\DatabaseUser;
use App\Models\Server;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException;
class LinkUser
@ -11,20 +14,50 @@ class LinkUser
/**
* @throws ValidationException
*/
public function link(DatabaseUser $databaseUser, array $databases): void
public function link(DatabaseUser $databaseUser, array $input): void
{
if (! isset($input['databases']) || ! is_array($input['databases'])) {
$input['databases'] = [];
}
$this->validate($databaseUser->server, $input);
$dbs = Database::query()
->where('server_id', $databaseUser->server_id)
->whereIn('name', $databases)
->whereIn('name', $input['databases'])
->count();
if (count($databases) !== $dbs) {
if (count($input['databases']) !== $dbs) {
throw ValidationException::withMessages(['databases' => __('Databases not found!')])
->errorBag('linkUser');
}
$databaseUser->databases = $databases;
$databaseUser->unlinkUser();
$databaseUser->linkUser();
$databaseUser->databases = $input['databases'];
// Unlink the user from all databases
$databaseUser->server->database()->handler()->unlink(
$databaseUser->username,
$databaseUser->host
);
// Link the user to the selected databases
$databaseUser->server->database()->handler()->link(
$databaseUser->username,
$databaseUser->host,
$databaseUser->databases
);
$databaseUser->save();
}
private function validate(Server $server, array $input): void
{
$rules = [
'databases.*' => [
'required',
Rule::exists('databases', 'name')->where('server_id', $server->id),
],
];
Validator::make($input, $rules)->validate();
}
}