add ability to get backup now and get all schedule backup
This commit is contained in:
@@ -9,6 +9,7 @@ use App\Actions\Database\StopDatabase;
|
||||
use App\Actions\Database\StopDatabaseProxy;
|
||||
use App\Enums\NewDatabaseTypes;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Jobs\DatabaseBackupJob;
|
||||
use App\Jobs\DeleteResourceJob;
|
||||
use App\Models\Project;
|
||||
use App\Models\ScheduledDatabaseBackup;
|
||||
@@ -80,12 +81,11 @@ class DatabasesController extends Controller
|
||||
$databases = $databases->merge($project->databases());
|
||||
}
|
||||
|
||||
$backupConfig = ScheduledDatabaseBackup::with('latest_log')->get();
|
||||
$databases = $databases->map(function ($database) use ($backupConfig) {
|
||||
$databaseBackupConfig = $backupConfig->where('database_id', $database->id)->first();
|
||||
$databases = $databases->map(function ($database) {
|
||||
$backupConfig = ScheduledDatabaseBackup::with('latest_log')->where('database_id', $database->id)->get();
|
||||
|
||||
if ($databaseBackupConfig) {
|
||||
$database->backup_configs = $databaseBackupConfig;
|
||||
if ($backupConfig) {
|
||||
$database->backup_configs = $backupConfig;
|
||||
} else {
|
||||
$database->backup_configs = null;
|
||||
}
|
||||
@@ -98,7 +98,7 @@ class DatabasesController extends Controller
|
||||
|
||||
#[OA\Get(
|
||||
summary: 'Get',
|
||||
description: 'Get database by UUID.',
|
||||
description: 'Get backups details by database UUID.',
|
||||
path: '/databases/{uuid}/backups',
|
||||
operationId: 'get-database-backups-by-uuid',
|
||||
security: [
|
||||
@@ -291,6 +291,7 @@ class DatabasesController extends Controller
|
||||
// WIP
|
||||
'save_s3' => ['type' => 'boolean', 'description' => 'Weather data is saved in s3 or not'],
|
||||
's3_storage_id' => ['type' => 'integer', 'description' => 'S3 storage id'],
|
||||
'backup_now' => ['type' => 'boolean', 'description' => 'Weather to take a backup now or not'],
|
||||
'enabled' => ['type' => 'boolean', 'description' => 'Weather the backup is enabled or not'],
|
||||
'databases_to_backup' => ['type' => 'string', 'description' => 'Comma separated list of databases to backup'],
|
||||
'dump_all' => ['type' => 'boolean', 'description' => 'Weather all databases are dumped or not'],
|
||||
@@ -326,7 +327,7 @@ class DatabasesController extends Controller
|
||||
)]
|
||||
public function update_by_uuid(Request $request)
|
||||
{
|
||||
$allowedBackupConfigsFields = ['save_s3', 'enabled', 'dump_all', 'frequency', 'databases_to_backup', 'database_backup_retention_amount_locally', 'database_backup_retention_days_locally', 'database_backup_retention_max_storage_locally', 'database_backup_retention_amount_s3', 'database_backup_retention_days_s3', 'database_backup_retention_max_storage_s3', 's3_storage_id'];
|
||||
$allowedBackupConfigsFields = ['save_s3', 'enabled', 'dump_all', 'frequency', 'databases_to_backup', 'database_backup_retention_amount_locally', 'database_backup_retention_days_locally', 'database_backup_retention_max_storage_locally', 'database_backup_retention_amount_s3', 'database_backup_retention_days_s3', 'database_backup_retention_max_storage_s3', 's3_storage_id'];
|
||||
$allowedFields = ['name', 'description', 'image', 'public_port', 'is_public', 'instant_deploy', 'limits_memory', 'limits_memory_swap', 'limits_memory_swappiness', 'limits_memory_reservation', 'limits_cpus', 'limits_cpuset', 'limits_cpu_shares', 'postgres_user', 'postgres_password', 'postgres_db', 'postgres_initdb_args', 'postgres_host_auth_method', 'postgres_conf', 'clickhouse_admin_user', 'clickhouse_admin_password', 'dragonfly_password', 'redis_password', 'redis_conf', 'keydb_password', 'keydb_conf', 'mariadb_conf', 'mariadb_root_password', 'mariadb_user', 'mariadb_password', 'mariadb_database', 'mongo_conf', 'mongo_initdb_root_username', 'mongo_initdb_root_password', 'mongo_initdb_database', 'mysql_root_password', 'mysql_password', 'mysql_user', 'mysql_database', 'mysql_conf'];
|
||||
$teamId = getTeamIdFromToken();
|
||||
if (is_null($teamId)) {
|
||||
@@ -352,6 +353,7 @@ class DatabasesController extends Controller
|
||||
'limits_cpuset' => 'string|nullable',
|
||||
'limits_cpu_shares' => 'numeric',
|
||||
'save_s3' => 'boolean',
|
||||
'backup_now' => 'boolean|nullable',
|
||||
'enabled' => 'boolean',
|
||||
'dump_all' => 'boolean',
|
||||
's3_storage_id' => 'integer|min:1|exists:s3_storages,id|nullable',
|
||||
@@ -573,7 +575,7 @@ class DatabasesController extends Controller
|
||||
}
|
||||
break;
|
||||
}
|
||||
$extraFields = array_diff(array_keys($request->all()), $allowedFields, $allowedBackupConfigsFields);
|
||||
$extraFields = array_diff(array_keys($request->all()), $allowedFields, $allowedBackupConfigsFields, ['backup_now']);
|
||||
if ($validator->fails() || ! empty($extraFields)) {
|
||||
$errors = $validator->errors();
|
||||
if (! empty($extraFields)) {
|
||||
@@ -620,10 +622,18 @@ class DatabasesController extends Controller
|
||||
's3_storage_id' => $backupPayload['s3_storage_id'] ?? 1,
|
||||
...$backupPayload,
|
||||
]);
|
||||
|
||||
if ($request->backup_now) {
|
||||
DatabaseBackupJob::dispatch($backupConfig);
|
||||
}
|
||||
}
|
||||
|
||||
if ($backupPayload && $backupConfig) {
|
||||
$backupConfig->update($backupPayload);
|
||||
|
||||
if ($request->backup_now) {
|
||||
DatabaseBackupJob::dispatch($backupConfig);
|
||||
}
|
||||
}
|
||||
|
||||
if ($whatToDoWithDatabaseProxy === 'start') {
|
||||
|
||||
Reference in New Issue
Block a user