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

@ -3,7 +3,6 @@
namespace App\Jobs\Backup;
use App\Enums\BackupFileStatus;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\BackupFile;
use App\Models\Database;
@ -27,22 +26,11 @@ public function handle(): void
$this->backupFile->status = BackupFileStatus::RESTORED;
$this->backupFile->restored_at = now();
$this->backupFile->save();
event(
new Broadcast('backup-restore-finished', [
'file' => $this->backupFile,
])
);
}
public function failed(): void
{
$this->backupFile->status = BackupFileStatus::RESTORE_FAILED;
$this->backupFile->save();
event(
new Broadcast('backup-restore-failed', [
'file' => $this->backupFile,
])
);
}
}

View File

@ -3,7 +3,6 @@
namespace App\Jobs\Backup;
use App\Enums\BackupFileStatus;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\BackupFile;
@ -24,22 +23,11 @@ public function handle(): void
$this->backupFile->status = BackupFileStatus::CREATED;
$this->backupFile->save();
event(
new Broadcast('run-backup-finished', [
'file' => $this->backupFile,
])
);
}
public function failed(): void
{
$this->backupFile->status = BackupFileStatus::FAILED;
$this->backupFile->save();
event(
new Broadcast('run-backup-failed', [
'file' => $this->backupFile,
])
);
}
}

View File

@ -1,48 +0,0 @@
<?php
namespace App\Jobs\CronJob;
use App\Enums\CronjobStatus;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\CronJob;
use App\SSHCommands\CronJob\UpdateCronJobsCommand;
use Throwable;
class AddToServer extends Job
{
protected CronJob $cronJob;
public function __construct(CronJob $cronJob)
{
$this->cronJob = $cronJob;
}
/**
* @throws Throwable
*/
public function handle(): void
{
$this->cronJob->server->ssh()->exec(
new UpdateCronJobsCommand($this->cronJob->user, $this->cronJob->crontab),
'update-crontab'
);
$this->cronJob->status = CronjobStatus::READY;
$this->cronJob->save();
event(
new Broadcast('add-cronjob-finished', [
'cronJob' => $this->cronJob,
])
);
}
public function failed(): void
{
$this->cronJob->delete();
event(
new Broadcast('add-cronjob-failed', [
'cronJob' => $this->cronJob,
])
);
}
}

View File

@ -1,46 +0,0 @@
<?php
namespace App\Jobs\CronJob;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\CronJob;
use App\SSHCommands\CronJob\UpdateCronJobsCommand;
use Throwable;
class RemoveFromServer extends Job
{
protected CronJob $cronJob;
public function __construct(CronJob $cronJob)
{
$this->cronJob = $cronJob;
}
/**
* @throws Throwable
*/
public function handle(): void
{
$this->cronJob->server->ssh()->exec(
new UpdateCronJobsCommand($this->cronJob->user, $this->cronJob->crontab),
'update-crontab'
);
$this->cronJob->delete();
event(
new Broadcast('remove-cronjob-finished', [
'id' => $this->cronJob->id,
])
);
}
public function failed(): void
{
$this->cronJob->save();
event(
new Broadcast('remove-cronjob-failed', [
'cronJob' => $this->cronJob,
])
);
}
}

View File

@ -1,35 +0,0 @@
<?php
namespace App\Jobs\Database;
use App\Enums\DatabaseStatus;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\Database;
class CreateOnServer extends Job
{
protected Database $database;
public function __construct(Database $database)
{
$this->database = $database;
}
public function handle(): void
{
$this->database->server->database()->handler()->create($this->database->name);
$this->database->status = DatabaseStatus::READY;
$this->database->save();
event(new Broadcast('create-database-finished', [
'id' => $this->database->id,
]));
}
public function failed(): void
{
event(new Broadcast('create-database-failed', [
'id' => $this->database->id,
]));
}
}

View File

@ -1,37 +0,0 @@
<?php
namespace App\Jobs\Database;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\Database;
class DeleteFromServer extends Job
{
protected Database $database;
public function __construct(Database $database)
{
$this->database = $database;
}
public function handle(): void
{
$this->database->server->database()->handler()->delete($this->database->name);
event(
new Broadcast('delete-database-finished', [
'id' => $this->database->id,
])
);
$this->database->delete();
}
public function failed(): void
{
event(
new Broadcast('delete-database-failed', [
'id' => $this->database->id,
])
);
}
}

View File

@ -1,48 +0,0 @@
<?php
namespace App\Jobs\DatabaseUser;
use App\Enums\DatabaseUserStatus;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\DatabaseUser;
class CreateOnServer extends Job
{
protected DatabaseUser $databaseUser;
public function __construct(DatabaseUser $databaseUser)
{
$this->databaseUser = $databaseUser;
}
public function handle(): void
{
$this->databaseUser->server->database()->handler()->createUser(
$this->databaseUser->username,
$this->databaseUser->password,
$this->databaseUser->host
);
$this->databaseUser->status = DatabaseUserStatus::READY;
$this->databaseUser->save();
if (count($this->databaseUser->databases) > 0) {
(new LinkUser($this->databaseUser))->handle();
}
event(
new Broadcast('create-database-user-finished', [
'id' => $this->databaseUser->id,
])
);
}
public function failed(): void
{
event(
new Broadcast('create-database-user-failed', [
'id' => $this->databaseUser->id,
])
);
}
}

View File

@ -1,40 +0,0 @@
<?php
namespace App\Jobs\DatabaseUser;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\DatabaseUser;
class DeleteFromServer extends Job
{
protected DatabaseUser $databaseUser;
public function __construct(DatabaseUser $databaseUser)
{
$this->databaseUser = $databaseUser;
}
public function handle(): void
{
$this->databaseUser->server->database()->handler()->deleteUser(
$this->databaseUser->username,
$this->databaseUser->host
);
event(
new Broadcast('delete-database-user-finished', [
'id' => $this->databaseUser->id,
])
);
$this->databaseUser->delete();
}
public function failed(): void
{
event(
new Broadcast('delete-database-user-failed', [
'id' => $this->databaseUser->id,
])
);
}
}

View File

@ -1,40 +0,0 @@
<?php
namespace App\Jobs\DatabaseUser;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\DatabaseUser;
class LinkUser extends Job
{
protected DatabaseUser $databaseUser;
public function __construct(DatabaseUser $databaseUser)
{
$this->databaseUser = $databaseUser;
}
public function handle(): void
{
$this->databaseUser->server->database()->handler()->link(
$this->databaseUser->username,
$this->databaseUser->host,
$this->databaseUser->databases
);
event(
new Broadcast('link-database-user-finished', [
'id' => $this->databaseUser->id,
])
);
}
public function failed(): void
{
event(
new Broadcast('link-database-user-failed', [
'id' => $this->databaseUser->id,
])
);
}
}

View File

@ -1,39 +0,0 @@
<?php
namespace App\Jobs\DatabaseUser;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\DatabaseUser;
class UnlinkUser extends Job
{
protected DatabaseUser $databaseUser;
public function __construct(DatabaseUser $databaseUser)
{
$this->databaseUser = $databaseUser;
}
public function handle(): void
{
$this->databaseUser->server->database()->handler()->unlink(
$this->databaseUser->username,
$this->databaseUser->host,
);
event(
new Broadcast('unlink-database-user-finished', [
'id' => $this->databaseUser->id,
])
);
}
public function failed(): void
{
event(
new Broadcast('unlink-database-user-failed', [
'id' => $this->databaseUser->id,
])
);
}
}

View File

@ -1,48 +0,0 @@
<?php
namespace App\Jobs\Firewall;
use App\Enums\FirewallRuleStatus;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\FirewallRule;
class AddToServer extends Job
{
protected FirewallRule $firewallRule;
public function __construct(FirewallRule $firewallRule)
{
$this->firewallRule = $firewallRule;
}
public function handle(): void
{
$this->firewallRule->server->firewall()
->handler()
->addRule(
$this->firewallRule->type,
$this->firewallRule->real_protocol,
$this->firewallRule->port,
$this->firewallRule->source,
$this->firewallRule->mask
);
$this->firewallRule->status = FirewallRuleStatus::READY;
$this->firewallRule->save();
event(
new Broadcast('create-firewall-rule-finished', [
'firewallRule' => $this->firewallRule,
])
);
}
public function failed(): void
{
$this->firewallRule->delete();
event(
new Broadcast('create-firewall-rule-failed', [
'firewallRule' => $this->firewallRule,
])
);
}
}

View File

@ -1,48 +0,0 @@
<?php
namespace App\Jobs\Firewall;
use App\Enums\FirewallRuleStatus;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\FirewallRule;
class RemoveFromServer extends Job
{
protected FirewallRule $firewallRule;
public function __construct(FirewallRule $firewallRule)
{
$this->firewallRule = $firewallRule;
}
public function handle(): void
{
$this->firewallRule->server->firewall()
->handler()
->removeRule(
$this->firewallRule->type,
$this->firewallRule->real_protocol,
$this->firewallRule->port,
$this->firewallRule->source,
$this->firewallRule->mask
);
$this->firewallRule->delete();
event(
new Broadcast('delete-firewall-rule-finished', [
'id' => $this->firewallRule->id,
])
);
}
public function failed(): void
{
$this->firewallRule->status = FirewallRuleStatus::READY;
$this->firewallRule->save();
event(
new Broadcast('delete-firewall-rule-failed', [
'firewallRule' => $this->firewallRule,
])
);
}
}

View File

@ -13,6 +13,9 @@
use Illuminate\Support\Str;
use Throwable;
/**
* @deprecated
*/
class InstallPHPMyAdmin extends Job
{
protected Service $service;

View File

@ -9,6 +9,9 @@
use Exception;
use Throwable;
/**
* @deprecated
*/
class UninstallPHPMyAdmin extends Job
{
protected Service $service;

View File

@ -1,46 +0,0 @@
<?php
namespace App\Jobs\PHP;
use App\Enums\ServiceStatus;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\Service;
use App\SSHCommands\PHP\ChangeDefaultPHPCommand;
use Throwable;
class SetDefaultCli extends Job
{
protected Service $service;
public function __construct(Service $service)
{
$this->service = $service;
}
/**
* @throws Throwable
*/
public function handle(): void
{
$this->service->server->ssh()->exec(
new ChangeDefaultPHPCommand($this->service->version),
'change-default-php'
);
$this->service->server->defaultService('php')->update(['is_default' => 0]);
$this->service->update(['is_default' => 1]);
$this->service->update(['status' => ServiceStatus::READY]);
event(
new Broadcast('set-default-cli-finished', [
'defaultPHP' => $this->service->server->defaultService('php'),
])
);
}
public function failed(): void
{
event(new Broadcast('set-default-cli-failed', [
'defaultPHP' => $this->service->server->defaultService('php'),
]));
}
}

View File

@ -1,51 +0,0 @@
<?php
namespace App\Jobs\Server;
use App\Events\Broadcast;
use App\Facades\Notifier;
use App\Jobs\Job;
use App\Models\Server;
use App\Notifications\ServerDisconnected;
use Throwable;
class CheckConnection extends Job
{
protected Server $server;
public function __construct(Server $server)
{
$this->server = $server;
}
/**
* @throws Throwable
*/
public function handle(): void
{
$status = $this->server->status;
$this->server->ssh()->connect();
$this->server->refresh();
if ($status == 'disconnected') {
$this->server->status = 'ready';
$this->server->save();
}
event(
new Broadcast('server-status-finished', [
'server' => $this->server,
])
);
}
public function failed(): void
{
$this->server->status = 'disconnected';
$this->server->save();
Notifier::send($this->server, new ServerDisconnected($this->server));
event(
new Broadcast('server-status-failed', [
'server' => $this->server,
])
);
}
}

View File

@ -1,45 +0,0 @@
<?php
namespace App\Jobs\Server;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\Server;
use App\SSHCommands\System\RebootCommand;
use Throwable;
class RebootServer extends Job
{
protected Server $server;
public function __construct(Server $server)
{
$this->server = $server;
}
/**
* @throws Throwable
*/
public function handle(): void
{
$this->server->ssh()->exec(new RebootCommand(), 'reboot');
event(
new Broadcast('reboot-server-finished', [
'message' => __('The server is being rebooted. It can take several minutes to boot up'),
'id' => $this->server->id,
])
);
}
public function failed(): void
{
$this->server->status = 'ready';
$this->server->save();
event(
new Broadcast('reboot-server-failed', [
'message' => __('Failed to reboot the server'),
'server' => $this->server,
])
);
}
}

View File

@ -1,43 +0,0 @@
<?php
namespace App\Jobs\Site;
use App\Events\Broadcast;
use App\Jobs\Job;
use App\Models\Site;
class ChangePHPVersion extends Job
{
protected Site $site;
protected string $version;
public function __construct(Site $site, $version)
{
$this->site = $site;
$this->version = $version;
}
public function handle(): void
{
$this->site->php_version = $this->version;
$this->site->server->webserver()->handler()->changePHPVersion($this->site, $this->version);
$this->site->save();
event(
new Broadcast('change-site-php-finished', [
'id' => $this->site->id,
'php_version' => $this->site->php_version,
])
);
}
public function failed(): void
{
event(
new Broadcast('change-site-php-failed', [
'message' => __('Failed to change PHP!'),
'id' => $this->site->id,
])
);
}
}