diff --git a/app/Enums/FileFormatEnum.php b/app/Enums/FileFormatEnum.php new file mode 100644 index 0000000..60ab4cb --- /dev/null +++ b/app/Enums/FileFormatEnum.php @@ -0,0 +1,27 @@ + JsonChunker::class + }; + + return $chunker->handle($path); + } + + public function converter() + { + return match($this){ + self::JSON => new JsonToDatabaseConverter() + }; + } +} diff --git a/app/Http/Controllers/V1/ConvertController.php b/app/Http/Controllers/V1/ConvertController.php index 303daf7..04744e7 100644 --- a/app/Http/Controllers/V1/ConvertController.php +++ b/app/Http/Controllers/V1/ConvertController.php @@ -2,13 +2,31 @@ namespace App\Http\Controllers\V1; +use App\Enums\FileFormatEnum; use App\Http\Controllers\Controller; +use App\Jobs\ChunkFile; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Str; class ConvertController extends Controller { - public function convert() + public function convert(FileFormatEnum $format, Request $request) { + Storage::put( + $request->file('file')->getClientOriginalName(), + $request->file('file')->getContent(), + ); + ChunkFile::dispatch( + Str::uuid(), + $request->file('file')->getClientOriginalName(), + $format + ); + + return response([ + 'msg' => 'done', + 'seccess' => true + ]); } } diff --git a/app/Interfaces/ChunkerInterface.php b/app/Interfaces/ChunkerInterface.php new file mode 100644 index 0000000..4910f75 --- /dev/null +++ b/app/Interfaces/ChunkerInterface.php @@ -0,0 +1,8 @@ +group(function () { - Route::post('json', [ + Route::post('{format}', [ \App\Http\Controllers\V1\ConvertController::class, 'convert' ]);