Skip to content

Commit f928950

Browse files
committed
Tambah integrasi dengan inertiajs
1 parent 7e3d18f commit f928950

18 files changed

+322
-0
lines changed

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"spatie/laravel-package-tools": "^1.15.0"
2424
},
2525
"require-dev": {
26+
"inertiajs/inertia-laravel": "^0.6.11",
2627
"laravel/pint": "^1.10",
2728
"orchestra/testbench": "^8.0",
2829
"roave/security-advisories": "dev-latest",
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace FromHome\ModelUpload\Actions;
6+
7+
use FromHome\ModelUpload\Models\ModelUploadFile;
8+
use Illuminate\Contracts\Pagination\CursorPaginator;
9+
10+
final class FetchUploadFileRecordPaginator
11+
{
12+
public function handle(ModelUploadFile $uploadFile): CursorPaginator
13+
{
14+
return $uploadFile->records()
15+
->with('model')
16+
->cursorPaginate()
17+
->withQueryString();
18+
}
19+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace FromHome\ModelUpload\Actions;
6+
7+
use Illuminate\Http\Request;
8+
use Illuminate\Database\Eloquent\Builder;
9+
use FromHome\ModelUpload\Models\ModelUploadFile;
10+
use Illuminate\Contracts\Pagination\CursorPaginator;
11+
12+
final class FetchUserUploadFilePaginator
13+
{
14+
public function handle(Request $request): CursorPaginator
15+
{
16+
$keyword = $request->string('keyword');
17+
18+
$modelType = $request->get('model_type');
19+
20+
return ModelUploadFile::query()
21+
->when($keyword, function (Builder $builder) use ($keyword): void {
22+
$value = \mb_strtolower((string) $keyword, 'UTF8');
23+
24+
$builder->orWhereRaw('LOWER(file_name) LIKE ?', ["%{$value}%"]);
25+
})
26+
->when($modelType, fn (Builder $builder) => $builder->where('model_type', $modelType))
27+
->where('user_id', $request->user()?->getKey())
28+
->cursorPaginate()
29+
->withQueryString();
30+
}
31+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace FromHome\ModelUpload\Http\Controllers;
6+
7+
use Illuminate\Contracts\Support\Responsable;
8+
use FromHome\ModelUpload\Http\Responses\ShowFileUploadRecordResponse;
9+
use FromHome\ModelUpload\Http\Responses\FetchFileUploadRecordResponse;
10+
11+
final class FileUploadRecordController
12+
{
13+
public function index(): Responsable
14+
{
15+
return app(FetchFileUploadRecordResponse::class);
16+
}
17+
18+
public function show(): Responsable
19+
{
20+
return app(ShowFileUploadRecordResponse::class);
21+
}
22+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace FromHome\ModelUpload\Http\Controllers;
6+
7+
use Illuminate\Http\Request;
8+
use Illuminate\Support\Facades\Pipeline;
9+
use Illuminate\Contracts\Support\Responsable;
10+
use FromHome\ModelUpload\Pipelines\StoreUploadFile;
11+
use FromHome\ModelUpload\Http\Responses\FetchUserFileUploadResponse;
12+
use FromHome\ModelUpload\Http\Responses\StoreUserFileUploadResponse;
13+
use FromHome\ModelUpload\Http\Responses\CreateUserFileUploadResponse;
14+
15+
final class UserFileUploadController
16+
{
17+
public function index(): Responsable
18+
{
19+
return app(FetchUserFileUploadResponse::class);
20+
}
21+
22+
public function create(): Responsable
23+
{
24+
return app(CreateUserFileUploadResponse::class);
25+
}
26+
27+
public function store(Request $request): Responsable
28+
{
29+
Pipeline::send($request)->through([
30+
StoreUploadFile::class,
31+
]);
32+
33+
return app(StoreUserFileUploadResponse::class);
34+
}
35+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
namespace FromHome\ModelUpload\Http\Responses;
4+
5+
use Illuminate\Contracts\Support\Responsable;
6+
7+
interface CreateUserFileUploadResponse extends Responsable
8+
{
9+
10+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace FromHome\ModelUpload\Http\Responses;
6+
7+
use Inertia\Inertia;
8+
use Symfony\Component\HttpFoundation\Response;
9+
10+
final class CreateUserFileUploadView implements CreateUserFileUploadResponse
11+
{
12+
public function toResponse($request): Response
13+
{
14+
return Inertia::render('model-upload/create')->toResponse($request);
15+
}
16+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
namespace FromHome\ModelUpload\Http\Responses;
4+
5+
use Illuminate\Contracts\Support\Responsable;
6+
7+
interface FetchFileUploadRecordResponse extends Responsable
8+
{
9+
10+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace FromHome\ModelUpload\Http\Responses;
6+
7+
use Inertia\Inertia;
8+
use Symfony\Component\HttpFoundation\Response;
9+
use FromHome\ModelUpload\Models\ModelUploadFile;
10+
use FromHome\ModelUpload\Actions\FetchUploadFileRecordPaginator;
11+
12+
final class FetchFileUploadRecordView implements FetchFileUploadRecordResponse
13+
{
14+
public function __construct(
15+
private readonly FetchUploadFileRecordPaginator $recordPaginator,
16+
) {
17+
}
18+
19+
public function toResponse($request): Response
20+
{
21+
$model = $request->route('model');
22+
23+
/** @var ModelUploadFile $modelUploadFile */
24+
$modelUploadFile = $model instanceof ModelUploadFile ?
25+
$model :
26+
ModelUploadFile::query()->findOrFail($model);
27+
28+
return Inertia::render('model-upload/show', [
29+
'model' => $modelUploadFile,
30+
'records' => $this->recordPaginator->handle($modelUploadFile),
31+
])->toResponse($request);
32+
}
33+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
namespace FromHome\ModelUpload\Http\Responses;
4+
5+
use Illuminate\Contracts\Support\Responsable;
6+
7+
interface FetchUserFileUploadResponse extends Responsable
8+
{
9+
10+
}

0 commit comments

Comments
 (0)