fix: allow reuse of a database name (#571)

* fix: allow reuse of a database name

* style

---------

Co-authored-by: Saeed Vaziry <61919774+saeedvaziry@users.noreply.github.com>
Co-authored-by: Saeed Vaziry <mr.saeedvaziry@gmail.com>
This commit is contained in:
Jamie Wood 2025-04-05 20:50:14 +01:00 committed by GitHub
parent f3500497d0
commit 4e5f975917
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 17 additions and 2 deletions

View File

@ -53,7 +53,7 @@ public static function rules(Server $server, array $input): array
'name' => [
'required',
'alpha_dash',
Rule::unique('databases', 'name')->where('server_id', $server->id),
Rule::unique('databases', 'name')->where('server_id', $server->id)->whereNull('deleted_at'),
],
'charset' => [
'required',

View File

@ -2,6 +2,7 @@
namespace App\Actions\Database;
use App\Models\Backup;
use App\Models\Database;
use App\Models\Server;
use App\Models\Service;
@ -16,5 +17,9 @@ public function delete(Server $server, Database $database): void
$handler = $service->handler();
$handler->delete($database->name);
$database->delete();
$database->backups()->each(function (Backup $backup): void {
app(ManageBackup::class)->stop($backup);
});
}
}

View File

@ -100,4 +100,10 @@ public static function rules(Server $server, array $input): array
return $rules;
}
public function stop(Backup $backup): void
{
$backup->status = BackupStatus::STOPPED;
$backup->save();
}
}

View File

@ -9,4 +9,6 @@ final class BackupStatus
const FAILED = 'failed';
const DELETING = 'deleting';
const STOPPED = 'stopped';
}

View File

@ -63,6 +63,7 @@ public static function boot(): void
BackupStatus::RUNNING => 'success',
BackupStatus::FAILED => 'danger',
BackupStatus::DELETING => 'warning',
BackupStatus::STOPPED => 'danger',
];
public function isCustomInterval(): bool

View File

@ -17,7 +17,7 @@
* @property string $status
* @property Server $server
* @property Backup[] $backups
* @property Carbon $deleted_at
* @property ?Carbon $deleted_at
*/
class Database extends AbstractModel
{

View File

@ -40,6 +40,7 @@ protected function getTableColumns(): array
return [
TextColumn::make('database.name')
->label('Database')
->tooltip(fn (Backup $record) => $record->database->deleted_at ? 'Deleted at '.$record->database->deleted_at->format('Y-m-d H:i:s') : null)
->searchable(),
TextColumn::make('storage.profile')
->label('Storage')