Files
animethemes-server/app/Actions/Storage/Base/UploadAction.php
T
paranarimasu 9d51617cd6 refactor(admin): reduce number of queries for upload actions (#504)
* refactor(admin): reduce number of queries for upload actions

* style: fix phpdoc description for upload audio action

* style: fix audio attribute constants
2023-01-15 23:26:21 -06:00

50 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Actions\Storage\Base;
use App\Contracts\Actions\Storage\StorageAction;
use App\Contracts\Actions\Storage\StorageResults;
use App\Contracts\Storage\InteractsWithDisks;
use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Storage;
/**
* Class UploadAction.
*/
abstract class UploadAction implements InteractsWithDisks, StorageAction
{
/**
* Create a new action instance.
*
* @param UploadedFile $file
* @param string $path
*/
public function __construct(protected readonly UploadedFile $file, protected readonly string $path)
{
}
/**
* Handle action.
*
* @return StorageResults
*/
public function handle(): StorageResults
{
$results = [];
foreach ($this->disks() as $disk) {
/** @var FilesystemAdapter $fs */
$fs = Storage::disk($disk);
$result = $fs->putFileAs($this->path, $this->file, $this->file->getClientOriginalName());
$results[$disk] = $result;
}
return new UploadResults($results);
}
}