From 3aa9191cbaa972073d2a01b9d82dd8f545130b16 Mon Sep 17 00:00:00 2001 From: lexx Date: Mon, 19 Aug 2024 17:59:08 +0300 Subject: [PATCH] file upload --- src/Http/Controller/FileController.php | 24 ++++++------------------ src/Record/RecordService.php | 10 ++++++++-- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/Http/Controller/FileController.php b/src/Http/Controller/FileController.php index e43279a..57deeab 100644 --- a/src/Http/Controller/FileController.php +++ b/src/Http/Controller/FileController.php @@ -7,7 +7,6 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Lucent\Channel\ChannelService; use Lucent\File\FileService; -use Lucent\File\FileUploadResult; use Lucent\Query\Query; use Lucent\Record\InputData\RecordInputData; use Lucent\Record\RecordService; @@ -47,23 +46,12 @@ class FileController extends Controller $schema = $this->channelService->channel->schemas->firstWhere("name", $request->input("schema")); $files = $request->file('files'); - - $uploadResults = collect($files)->map(fn($file) => $this->fileService->upload($schema, $file))->toArray(); - collect($uploadResults) - ->filter(fn(FileUploadResult $res) => !$res->isDuplicate) - ->values() - ->map(function (FileUploadResult $uploadResult) use ($schema) { - return $this->recordService->create( - new RecordInputData( - schemaName: $schema->name, - status: Status::PUBLISHED, - - ), - file: $uploadResult->recordFile, - ); - - })->toArray(); - + foreach ($files as $file) { + $this->recordService->createFromUploadedFile($file, new RecordInputData( + schemaName: $schema->name, + status: Status::PUBLISHED, + ), []); + } $graph = $this->query ->filter([ diff --git a/src/Record/RecordService.php b/src/Record/RecordService.php index c697be9..c3f29bf 100644 --- a/src/Record/RecordService.php +++ b/src/Record/RecordService.php @@ -57,6 +57,9 @@ readonly class RecordService throw new LucentException("You can't upload a file to a regular record"); } $fileData = $this->fileService->createFromUrl($schema, $url); + if ($fileData->isDuplicate) { + return $fileData->duplicateId; + } return $this->create($data, $fileData->recordFile, $edges); } @@ -64,13 +67,16 @@ readonly class RecordService UploadedFile $uploadedFile, RecordInputData $data, array $edges - ) + ): string { $schema = $this->channelService->getSchema($data->schemaName)->get(); if ($schema->type !== Type::FILES) { throw new LucentException("You can't upload a file to a regular record"); } $fileData = $this->fileService->upload($schema, $uploadedFile); + if ($fileData->isDuplicate) { + return $fileData->duplicateId; + } return $this->create($data, $fileData->recordFile, $edges); } @@ -78,7 +84,7 @@ readonly class RecordService FileData $fileData, RecordInputData $data, array $edges - ) + ): string { $schema = $this->channelService->getSchema($data->schemaName)->get(); if ($schema->type !== Type::FILES) {