controller refactoring part 19

This commit is contained in:
Peter Papp
2021-07-21 12:01:44 +02:00
parent 76e1cd1113
commit 3860faf851
10 changed files with 146 additions and 120 deletions
+14 -16
View File
@@ -4,8 +4,11 @@ namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use App\Console\Commands\SetupDevEnvironment;
use App\Console\Commands\SetupProdEnvironment;
use Domain\SetupWizard\Services\SchedulerService;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Support\Scheduler\Actions\DeleteExpiredShareLinksAction;
use Support\Scheduler\Actions\DeleteFailedFilesAction;
use Support\Scheduler\Actions\DeleteOldZipsAction;
use Support\Scheduler\Actions\DeleteUnverifiedUsersAction;
class Kernel extends ConsoleKernel
{
@@ -21,30 +24,25 @@ class Kernel extends ConsoleKernel
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
protected function schedule(Schedule $schedule): void
{
$scheduler = resolve(SchedulerService::class);
$schedule->call(
fn () => resolve(DeleteExpiredShareLinksAction::class)()
)->everyTenMinutes();
$schedule->call(function () use ($scheduler) {
$scheduler->delete_expired_shared_links();
})->everyTenMinutes();
$schedule->call(
fn () => resolve(DeleteUnverifiedUsersAction::class)()
)->daily();
$schedule->call(function () use ($scheduler) {
$scheduler->delete_old_zips();
$schedule->call(function () {
resolve(DeleteOldZipsAction::class)();
if (! is_storage_driver(['local'])) {
$scheduler->delete_failed_files();
resolve(DeleteFailedFilesAction::class)();
}
})->everySixHours();
$schedule->call(function () use ($scheduler) {
$scheduler->delete_unverified_users();
})->daily();
// Run queue jobs every minute
$schedule->command('queue:work --stop-when-empty')
->everyMinute()
@@ -6,7 +6,7 @@ use App\Http\Controllers\Controller;
use Domain\Files\Requests\UploadRequest;
use Domain\Files\Actions\UploadFileAction;
class UploadFilesController extends Controller
class UploadFileController extends Controller
{
/**
* Upload file for authenticated master|editor user
-3
View File
@@ -8,9 +8,6 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Factories\HasFactory;
/**
* @method static where(string $string, mixed $token)
*/
class Zip extends Model
{
use HasFactory;
@@ -0,0 +1,29 @@
<?php
namespace Support\Scheduler\Actions;
use Carbon\Carbon;
use Domain\Sharing\Models\Share;
class DeleteExpiredShareLinksAction
{
/**
* Get and delete expired shared links
*/
public function __invoke(): void
{
Share::whereNotNull('expire_in')
->get()
->each(function ($share) {
// Get dates
$created_at = Carbon::parse($share->created_at);
// If time was over, then delete share record
if ($created_at->diffInHours(now()) >= $share->expire_in) {
$share->delete();
}
});
}
}
@@ -0,0 +1,44 @@
<?php
namespace Support\Scheduler\Actions;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
class DeleteFailedFilesAction
{
/**
* Get and delete failed files older than 24 hours
*/
public function __invoke(): void
{
$local_disk = Storage::disk('local');
// Get all files from storage
$files = collect([
//$local_disk->allFiles('files'),
$local_disk->allFiles('chunks'),
])->collapse();
$files->each(function ($file) use ($local_disk) {
// Get the file's last modification time.
$last_modified = $local_disk
->lastModified($file);
// Get diffInHours
$diff = Carbon::parse($last_modified)
->diffInHours(now());
// Delete if file is in local storage more than 24 hours
if ($diff >= 24) {
Log::info("Failed file or chunk $file deleted.");
// Delete file from local storage
$local_disk->delete($file);
}
});
}
}
@@ -0,0 +1,27 @@
<?php
namespace Support\Scheduler\Actions;
use Domain\Zipping\Models\Zip;
use Illuminate\Support\Facades\Storage;
class DeleteOldZipsAction
{
/**
* Delete old zips
*/
public function __invoke(): void
{
Zip::where('created_at', '<=', now()->subDay()->toDateTimeString())
->get()
->each(function ($zip) {
// Delete zip file
Storage::disk('local')->delete("zip/$zip->basename");
// Delete zip record
$zip->delete();
});
}
}
@@ -0,0 +1,21 @@
<?php
namespace Support\Scheduler\Actions;
use App\Users\Models\User;
class DeleteUnverifiedUsersAction
{
/**
* Delete unverified users older than 30 days
*/
public function __invoke(): void
{
User::where('created_at', '<=', now()->subDays(30)->toDateString())
->where('email_verified_at', null)
->get()
->each(fn ($user) => $user->delete());
}
}
@@ -1,89 +0,0 @@
<?php
namespace Support\Scheduler\Actions;
use Carbon\Carbon;
use App\Users\Models\User;
use Domain\Zipping\Models\Zip;
use Domain\Sharing\Models\Share;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
class SchedulerService
{
/**
* Delete old zips
*/
public function delete_old_zips(): void
{
Zip::where('created_at', '<=', now()->subDay()->toDateTimeString())
->get()
->each(function ($zip) {
// Delete zip file
Storage::disk('local')->delete("zip/$zip->basename");
// Delete zip record
$zip->delete();
});
}
/**
* Get and delete expired shared links
*/
public function delete_expired_shared_links(): void
{
Share::whereNotNull('expire_in')
->get()
->each(function ($share) {
// Get dates
$created_at = Carbon::parse($share->created_at);
// If time was over, then delete share record
if ($created_at->diffInHours(now()) >= $share->expire_in) {
$share->delete();
}
});
}
/**
* Get and delete failed files older than 24 hours
*/
public function delete_failed_files(): void
{
$local_disk = Storage::disk('local');
// Get all files from storage
$files = collect([
//$local_disk->allFiles('files'),
$local_disk->allFiles('chunks'),
])->collapse();
$files->each(function ($file) use ($local_disk) {
// Get the file's last modification time.
$last_modified = $local_disk
->lastModified($file);
// Get diffInHours
$diff = Carbon::parse($last_modified)
->diffInHours(now());
// Delete if file is in local storage more than 24 hours
if ($diff >= 24) {
Log::info("Failed file or chunk $file deleted.");
// Delete file from local storage
$local_disk->delete($file);
}
});
}
/**
* Delete unverified users older than 30 days
*/
public function delete_unverified_users(): void
{
User::where('created_at', '<=', now()->subDays(30)->toDateString())
->where('email_verified_at', null)
->get()
->each(fn ($user) => $user->delete());
}
}