use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Queue\Queueable;
use Illuminate\Support\Facades\Log;
class backUpDatabase implements ShouldQueue
{
use Queueable;
public function handle(): void
{
Log::info('Backing up database');
$databasePath = config('database.connections.sqlite.database');
$backupPath = storage_path('app/backups/');
if (!file_exists($backupPath)) {
mkdir($backupPath, 0777, true);
}
$backupName = 'database_backup_' . now()->format('Y-m-d_H-i-s') . '.sqlite';
copy($databasePath, $backupPath . $backupName);
Log::info('Database backup created: ' . $backupName);
$backups = glob($backupPath . '*.sqlite');
$prunedBackups = 0;
foreach ($backups as $backup) {
if (filemtime($backup) < now()->subDays(7)->timestamp) {
unlink($backup);
$prunedBackups++;
}
}
Log::info('Database backups pruned: ' . $prunedBackups);
}
}