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
+5
View File
@@ -10,6 +10,7 @@ use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Support\Scheduler\Actions\DeleteUnverifiedUsersAction; use Support\Scheduler\Actions\DeleteUnverifiedUsersAction;
use Support\Scheduler\Actions\DeleteExpiredShareLinksAction; use Support\Scheduler\Actions\DeleteExpiredShareLinksAction;
use App\Console\Commands\GenerateDemoSubscriptionContentCommand; use App\Console\Commands\GenerateDemoSubscriptionContentCommand;
use Support\Scheduler\Actions\ExpireUnfilledUploadRequestAction;
class Kernel extends ConsoleKernel class Kernel extends ConsoleKernel
{ {
@@ -42,6 +43,10 @@ class Kernel extends ConsoleKernel
fn () => resolve(DeleteExpiredShareLinksAction::class)() fn () => resolve(DeleteExpiredShareLinksAction::class)()
)->everyTenMinutes(); )->everyTenMinutes();
$schedule->call(
fn () => resolve(ExpireUnfilledUploadRequestAction::class)()
)->hourly();
$schedule->call( $schedule->call(
fn () => resolve(DeleteUnverifiedUsersAction::class)() fn () => resolve(DeleteUnverifiedUsersAction::class)()
)->daily()->at('00:05'); )->daily()->at('00:05');
@@ -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',
]);
}
});
}
}
@@ -1,5 +1,4 @@
<?php <?php
namespace Tests\Domain\UploadRequest; namespace Tests\Domain\UploadRequest;
use Storage; use Storage;
@@ -9,6 +8,7 @@ use App\Users\Models\User;
use Domain\Files\Models\File; use Domain\Files\Models\File;
use Illuminate\Http\UploadedFile; use Illuminate\Http\UploadedFile;
use Domain\UploadRequest\Models\UploadRequest; use Domain\UploadRequest\Models\UploadRequest;
use Support\Scheduler\Actions\ExpireUnfilledUploadRequestAction;
use Domain\UploadRequest\Notifications\UploadRequestNotification; use Domain\UploadRequest\Notifications\UploadRequestNotification;
class UploadRequestTest extends TestCase class UploadRequestTest extends TestCase
@@ -192,4 +192,22 @@ class UploadRequestTest extends TestCase
'status' => 'filled', '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',
]);
}
} }