Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
42 changes: 42 additions & 0 deletions .github/workflows/code-quality.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: code-quality

on:
push:
branches:
- 2.x
pull_request:
branches:
- 2.x

jobs:
tests:
runs-on: ubuntu-22.04

strategy:
fail-fast: true
matrix:
php: [ 8.2 ]

steps:
- uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}

- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v4
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-

- name: Install dependencies
if: steps.composer-cache.outputs.cache-hit != 'true'
run: composer install --prefer-dist --no-progress --no-suggest

- name: Run PHPStan
run: ./vendor/bin/phpstan analyse
7 changes: 7 additions & 0 deletions app/Actions/CronJob/CreateCronJob.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@

class CreateCronJob
{
/**
* @param array<string, mixed> $input
*/
public function create(Server $server, array $input): CronJob
{
$cronJob = new CronJob([
Expand All @@ -28,6 +31,10 @@ public function create(Server $server, array $input): CronJob
return $cronJob;
}

/**
* @param array<string, mixed> $input
* @return array<string, array<mixed>>
*/
public static function rules(array $input, Server $server): array
{
$rules = [
Expand Down
13 changes: 12 additions & 1 deletion app/Actions/Database/CreateDatabase.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,15 @@
use App\Enums\DatabaseStatus;
use App\Models\Database;
use App\Models\Server;
use App\Models\Service;
use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException;

class CreateDatabase
{
/**
* @param array<string, mixed> $input
*/
public function create(Server $server, array $input): Database
{
$database = new Database([
Expand All @@ -18,8 +22,12 @@ public function create(Server $server, array $input): Database
'collation' => $input['collation'],
'name' => $input['name'],
]);

/** @var Service $service */
$service = $server->database();

/** @var \App\SSH\Services\Database\Database $databaseHandler */
$databaseHandler = $server->database()->handler();
$databaseHandler = $service->handler();
$databaseHandler->create($database->name, $database->charset, $database->collation);
$database->status = DatabaseStatus::READY;
$database->save();
Expand All @@ -34,6 +42,9 @@ public function create(Server $server, array $input): Database
}

/**
* @param array<string, mixed> $input
* @return array<string, mixed>
*
* @throws ValidationException
*/
public static function rules(Server $server, array $input): array
Expand Down
13 changes: 12 additions & 1 deletion app/Actions/Database/CreateDatabaseUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,17 @@
use App\Enums\DatabaseUserStatus;
use App\Models\DatabaseUser;
use App\Models\Server;
use App\Models\Service;
use App\SSH\Services\Database\Database;
use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException;

class CreateDatabaseUser
{
/**
* @param array<string, mixed> $input
* @param array<string> $links
*
* @throws ValidationException
*/
public function create(Server $server, array $input, array $links = []): DatabaseUser
Expand All @@ -23,8 +27,12 @@ public function create(Server $server, array $input, array $links = []): Databas
'host' => (isset($input['remote']) && $input['remote']) || isset($input['host']) ? $input['host'] : 'localhost',
'databases' => $links,
]);

/** @var Service $service */
$service = $server->database();

/** @var Database $databaseHandler */
$databaseHandler = $server->database()->handler();
$databaseHandler = $service->handler();
$databaseHandler->createUser(
$databaseUser->username,
$databaseUser->password,
Expand All @@ -41,6 +49,9 @@ public function create(Server $server, array $input, array $links = []): Databas
}

/**
* @param array<string, mixed> $input
* @return array<string, mixed>
*
* @throws ValidationException
*/
public static function rules(Server $server, array $input): array
Expand Down
7 changes: 6 additions & 1 deletion app/Actions/Database/DeleteDatabase.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,17 @@

use App\Models\Database;
use App\Models\Server;
use App\Models\Service;

class DeleteDatabase
{
public function delete(Server $server, Database $database): void
{
$server->database()->handler()->delete($database->name);
/** @var Service $service */
$service = $server->database();
/** @var \App\SSH\Services\Database\Database $handler */
$handler = $service->handler();
$handler->delete($database->name);
$database->delete();
}
}
8 changes: 7 additions & 1 deletion app/Actions/Database/DeleteDatabaseUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,18 @@

use App\Models\DatabaseUser;
use App\Models\Server;
use App\Models\Service;
use App\SSH\Services\Database\Database;

class DeleteDatabaseUser
{
public function delete(Server $server, DatabaseUser $databaseUser): void
{
$server->database()->handler()->deleteUser($databaseUser->username, $databaseUser->host);
/** @var Service $service */
$service = $server->database();
/** @var Database $handler */
$handler = $service->handler();
$handler->deleteUser($databaseUser->username, $databaseUser->host);
$databaseUser->delete();
}
}
18 changes: 16 additions & 2 deletions app/Actions/Database/LinkUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,16 @@
use App\Models\Database;
use App\Models\DatabaseUser;
use App\Models\Server;
use App\Models\Service;
use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException;

class LinkUser
{
/**
* @param array<string, mixed> $input
* @return DatabaseUser $databaseUser
*
* @throws ValidationException
*/
public function link(DatabaseUser $databaseUser, array $input): DatabaseUser
Expand All @@ -29,14 +33,20 @@ public function link(DatabaseUser $databaseUser, array $input): DatabaseUser

$databaseUser->databases = $input['databases'];

/** @var Service $service */
$service = $databaseUser->server->database();

/** @var \App\SSH\Services\Database\Database $handler */
$handler = $service->handler();

// Unlink the user from all databases
$databaseUser->server->database()->handler()->unlink(
$handler->unlink(
$databaseUser->username,
$databaseUser->host
);

// Link the user to the selected databases
$databaseUser->server->database()->handler()->link(
$handler->link(
$databaseUser->username,
$databaseUser->host,
$databaseUser->databases
Expand All @@ -49,6 +59,10 @@ public function link(DatabaseUser $databaseUser, array $input): DatabaseUser
return $databaseUser;
}

/**
* @param array<string, mixed> $input
* @return array<string, mixed>
*/
public static function rules(Server $server, array $input): array
{
return [
Expand Down
11 changes: 10 additions & 1 deletion app/Actions/Database/ManageBackup.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
class ManageBackup
{
/**
* @param array<string, mixed> $input
*
* @throws AuthorizationException
* @throws ValidationException
*/
Expand All @@ -35,6 +37,9 @@ public function create(Server $server, array $input): Backup
return $backup;
}

/**
* @param array<string, mixed> $input
*/
public function update(Backup $backup, array $input): void
{
$backup->interval = $input['interval'] == 'custom' ? $input['custom_interval'] : $input['interval'];
Expand All @@ -47,7 +52,7 @@ public function delete(Backup $backup): void
$backup->status = BackupStatus::DELETING;
$backup->save();

dispatch(function () use ($backup) {
dispatch(function () use ($backup): void {
$files = $backup->files;
foreach ($files as $file) {
$file->status = BackupFileStatus::DELETING;
Expand All @@ -60,6 +65,10 @@ public function delete(Backup $backup): void
});
}

/**
* @param array<string, mixed> $input
* @return array<string, mixed>
*/
public static function rules(Server $server, array $input): array
{
$rules = [
Expand Down
2 changes: 1 addition & 1 deletion app/Actions/Database/ManageBackupFile.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public function delete(BackupFile $file): void
$file->status = BackupFileStatus::DELETING;
$file->save();

dispatch(function () use ($file) {
dispatch(function () use ($file): void {
$file->deleteFile();
});
}
Expand Down
15 changes: 12 additions & 3 deletions app/Actions/Database/RestoreBackup.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,13 @@
use App\Enums\BackupFileStatus;
use App\Models\BackupFile;
use App\Models\Database;
use App\Models\Service;

class RestoreBackup
{
/**
* @param array<string, mixed> $input
*/
public function restore(BackupFile $backupFile, array $input): void
{
/** @var Database $database */
Expand All @@ -16,19 +20,24 @@ public function restore(BackupFile $backupFile, array $input): void
$backupFile->restored_to = $database->name;
$backupFile->save();

dispatch(function () use ($backupFile, $database) {
dispatch(function () use ($backupFile, $database): void {
/** @var Service $service */
$service = $database->server->database();
/** @var \App\SSH\Services\Database\Database $databaseHandler */
$databaseHandler = $database->server->database()->handler();
$databaseHandler = $service->handler();
$databaseHandler->restoreBackup($backupFile, $database->name);
$backupFile->status = BackupFileStatus::RESTORED;
$backupFile->restored_at = now();
$backupFile->save();
})->catch(function () use ($backupFile) {
})->catch(function () use ($backupFile): void {
$backupFile->status = BackupFileStatus::RESTORE_FAILED;
$backupFile->save();
})->onConnection('ssh');
}

/**
* @return array<string, array<string>>
*/
public static function rules(): array
{
return [
Expand Down
9 changes: 6 additions & 3 deletions app/Actions/Database/RunBackup.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use App\Enums\BackupStatus;
use App\Models\Backup;
use App\Models\BackupFile;
use App\Models\Service;
use App\SSH\Services\Database\Database;
use Illuminate\Support\Str;

Expand All @@ -20,9 +21,11 @@ public function run(Backup $backup): BackupFile
]);
$file->save();

dispatch(function () use ($file, $backup) {
dispatch(function () use ($file, $backup): void {
/** @var Service $service */
$service = $backup->server->database();
/** @var Database $databaseHandler */
$databaseHandler = $file->backup->server->database()->handler();
$databaseHandler = $service->handler();
$databaseHandler->runBackup($file);
$file->status = BackupFileStatus::CREATED;
$file->save();
Expand All @@ -31,7 +34,7 @@ public function run(Backup $backup): BackupFile
$backup->status = BackupStatus::RUNNING;
$backup->save();
}
})->catch(function () use ($file, $backup) {
})->catch(function () use ($file, $backup): void {
$backup->status = BackupStatus::FAILED;
$backup->save();
$file->status = BackupFileStatus::FAILED;
Expand Down
5 changes: 5 additions & 0 deletions app/Actions/FileManager/FetchFiles.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
class FetchFiles
{
/**
* @param array<string, mixed> $input
*
* @throws SSHError
*/
public function fetch(User $user, Server $server, array $input): void
Expand All @@ -24,6 +26,9 @@ public function fetch(User $user, Server $server, array $input): void
);
}

/**
* @return array<string, array<string>>
*/
public static function rules(Server $server): array
{
return [
Expand Down
Loading