auto expiration for upload request

This commit is contained in:
Čarodej
2022-02-22 11:53:51 +01:00
parent ee67b8050d
commit 6feadfd188
3 changed files with 49 additions and 1 deletions

View File

@@ -10,6 +10,7 @@ use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Support\Scheduler\Actions\DeleteUnverifiedUsersAction;
use Support\Scheduler\Actions\DeleteExpiredShareLinksAction;
use App\Console\Commands\GenerateDemoSubscriptionContentCommand;
use Support\Scheduler\Actions\ExpireUnfilledUploadRequestAction;
class Kernel extends ConsoleKernel
{
@@ -42,6 +43,10 @@ class Kernel extends ConsoleKernel
fn () => resolve(DeleteExpiredShareLinksAction::class)()
)->everyTenMinutes();
$schedule->call(
fn () => resolve(ExpireUnfilledUploadRequestAction::class)()
)->hourly();
$schedule->call(
fn () => resolve(DeleteUnverifiedUsersAction::class)()
)->daily()->at('00:05');

View File

@@ -0,0 +1,25 @@
<?php
namespace Support\Scheduler\Actions;
use Carbon\Carbon;
use Domain\UploadRequest\Models\UploadRequest;
class ExpireUnfilledUploadRequestAction
{
public function __invoke()
{
UploadRequest::where('status', 'active')
->cursor()
->each(function ($uploadRequest) {
// Get dates
$created_at = Carbon::parse($uploadRequest->created_at);
// If time was over, then expire record
if ($created_at->diffInHours(now()) >= 72) {
$uploadRequest->update([
'status' => 'expired',
]);
}
});
}
}

View File

@@ -1,5 +1,4 @@
<?php
namespace Tests\Domain\UploadRequest;
use Storage;
@@ -9,6 +8,7 @@ use App\Users\Models\User;
use Domain\Files\Models\File;
use Illuminate\Http\UploadedFile;
use Domain\UploadRequest\Models\UploadRequest;
use Support\Scheduler\Actions\ExpireUnfilledUploadRequestAction;
use Domain\UploadRequest\Notifications\UploadRequestNotification;
class UploadRequestTest extends TestCase
@@ -192,4 +192,22 @@ class UploadRequestTest extends TestCase
'status' => 'filled',
]);
}
/**
* @test
*/
public function it_mark_upload_request_as_expired_after_72_hours()
{
UploadRequest::factory()
->create([
'status' => 'active',
'created_at' => now()->subHours(72),
]);
resolve(ExpireUnfilledUploadRequestAction::class)();
$this->assertDatabaseHas('upload_requests', [
'status' => 'expired',
]);
}
}