Skip to content

Commit 6d3839e

Browse files
committed
refactor controllers to use requests
1 parent 0031c7f commit 6d3839e

17 files changed

Lines changed: 402 additions & 98 deletions

app/Http/Controllers/DataController.php

Lines changed: 16 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
namespace App\Http\Controllers;
44

5+
use App\Http\Requests\BatchStoreDocumentRequest;
6+
use App\Http\Requests\BulkDestroyDocumentRequest;
7+
use App\Http\Requests\BulkUploadRequest;
8+
use App\Http\Requests\MoveDocumentRequest;
9+
use App\Http\Requests\StoreDocumentRequest;
10+
use App\Http\Requests\UpdateDocumentRequest;
511
use App\Models\Document;
612
use App\Services\FileProcessingService;
713
use App\Http\Controllers\DataFeedController;
@@ -18,16 +24,9 @@ public function __construct(
1824
/**
1925
* Feed data into the system (single document)
2026
*/
21-
public function store(Request $request): JsonResponse
27+
public function store(StoreDocumentRequest $request): JsonResponse
2228
{
23-
$validated = $request->validate([
24-
'title' => 'required|string|max:255',
25-
'path' => 'nullable|string|max:1000',
26-
'body' => 'required|string',
27-
'tags' => 'array',
28-
'tags.*' => 'string',
29-
'metadata' => 'array'
30-
]);
29+
$validated = $request->validated();
3130

3231
// If no path provided, use title as filename in root
3332
if (empty($validated['path'])) {
@@ -53,17 +52,8 @@ public function store(Request $request): JsonResponse
5352
/**
5453
* Batch feed data (multiple documents)
5554
*/
56-
public function batchStore(Request $request): JsonResponse
55+
public function batchStore(BatchStoreDocumentRequest $request): JsonResponse
5756
{
58-
$request->validate([
59-
'documents' => 'required|array',
60-
'documents.*.title' => 'required|string|max:255',
61-
'documents.*.path' => 'nullable|string|max:1000',
62-
'documents.*.body' => 'required|string',
63-
'documents.*.tags' => 'array',
64-
'documents.*.metadata' => 'array'
65-
]);
66-
6757
try {
6858
$documents = [];
6959

@@ -150,7 +140,7 @@ private function showDataSourceItem(int $pseudoId): JsonResponse
150140
/**
151141
* Update a document
152142
*/
153-
public function update(Request $request, int $id): JsonResponse
143+
public function update(UpdateDocumentRequest $request, int $id): JsonResponse
154144
{
155145
$document = Document::find($id);
156146

@@ -161,17 +151,8 @@ public function update(Request $request, int $id): JsonResponse
161151
], 404);
162152
}
163153

164-
$validated = $request->validate([
165-
'title' => 'string|max:255',
166-
'path' => 'string|max:1000',
167-
'body' => 'string',
168-
'tags' => 'array',
169-
'tags.*' => 'string',
170-
'metadata' => 'array'
171-
]);
172-
173154
try {
174-
$document->update($validated);
155+
$document->update($request->validated());
175156

176157
return response()->json([
177158
'success' => true,
@@ -218,15 +199,10 @@ public function destroy(int $id): JsonResponse
218199
/**
219200
* Bulk delete documents
220201
*/
221-
public function bulkDestroy(Request $request): JsonResponse
202+
public function bulkDestroy(BulkDestroyDocumentRequest $request): JsonResponse
222203
{
223-
$validated = $request->validate([
224-
'ids' => 'required|array',
225-
'ids.*' => 'integer|exists:documents,id'
226-
]);
227-
228204
try {
229-
$count = Document::whereIn('id', $validated['ids'])->delete();
205+
$count = Document::whereIn('id', $request->validated()['ids'])->delete();
230206

231207
return response()->json([
232208
'success' => true,
@@ -245,14 +221,8 @@ public function bulkDestroy(Request $request): JsonResponse
245221
* Bulk upload documents from file(s) (CSV, TXT, Excel, PDF, JSON, TSV)
246222
* Supports both single and multiple file uploads
247223
*/
248-
public function bulkUpload(Request $request): JsonResponse
224+
public function bulkUpload(BulkUploadRequest $request): JsonResponse
249225
{
250-
$request->validate([
251-
'file' => 'required_without:files|file|mimes:csv,txt,xlsx,xls,pdf,json,tsv|max:10240', // 10MB max per file
252-
'files' => 'required_without:file|array',
253-
'files.*' => 'file|mimes:csv,txt,xlsx,xls,pdf,json,tsv|max:10240' // 10MB max per file
254-
]);
255-
256226
try {
257227
$files = [];
258228

@@ -460,7 +430,7 @@ private function addChildrenToFolders($nodes, $allFolders): array
460430
/**
461431
* Move document to a new path
462432
*/
463-
public function moveDocument(Request $request, int $id): JsonResponse
433+
public function moveDocument(MoveDocumentRequest $request, int $id): JsonResponse
464434
{
465435
$document = Document::find($id);
466436

@@ -471,12 +441,8 @@ public function moveDocument(Request $request, int $id): JsonResponse
471441
], 404);
472442
}
473443

474-
$validated = $request->validate([
475-
'new_path' => 'required|string|max:1000'
476-
]);
477-
478444
try {
479-
$document->update(['path' => $validated['new_path']]);
445+
$document->update(['path' => $request->validated()['new_path']]);
480446

481447
return response()->json([
482448
'success' => true,

app/Http/Controllers/DataSourceController.php

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
namespace App\Http\Controllers;
44

5+
use App\Http\Requests\StoreDataSourceRequest;
6+
use App\Http\Requests\TestDataSourceRequest;
7+
use App\Http\Requests\UpdateDataSourceRequest;
58
use App\Models\DataSource;
69
use App\Services\DataSourceService;
710
use Illuminate\Http\Request;
@@ -53,18 +56,9 @@ public function show(int $id): JsonResponse
5356
/**
5457
* Create a new data source
5558
*/
56-
public function store(Request $request): JsonResponse
59+
public function store(StoreDataSourceRequest $request): JsonResponse
5760
{
58-
$validated = $request->validate([
59-
'name' => 'required|string|max:255',
60-
'type' => 'required|in:database,url,api',
61-
'config' => 'required|array',
62-
'cache_ttl' => 'required|integer|min:0',
63-
'enabled' => 'boolean',
64-
'description' => 'nullable|string',
65-
]);
66-
67-
$source = DataSource::create($validated);
61+
$source = DataSource::create($request->validated());
6862

6963
return response()->json([
7064
'success' => true,
@@ -76,20 +70,11 @@ public function store(Request $request): JsonResponse
7670
/**
7771
* Update a data source
7872
*/
79-
public function update(Request $request, int $id): JsonResponse
73+
public function update(UpdateDataSourceRequest $request, int $id): JsonResponse
8074
{
8175
$source = DataSource::findOrFail($id);
8276

83-
$validated = $request->validate([
84-
'name' => 'sometimes|required|string|max:255',
85-
'type' => 'sometimes|required|in:database,url,api',
86-
'config' => 'sometimes|required|array',
87-
'cache_ttl' => 'sometimes|required|integer|min:0',
88-
'enabled' => 'boolean',
89-
'description' => 'nullable|string',
90-
]);
91-
92-
$source->update($validated);
77+
$source->update($request->validated());
9378

9479
return response()->json([
9580
'success' => true,
@@ -115,14 +100,10 @@ public function destroy(int $id): JsonResponse
115100
/**
116101
* Test a data source connection
117102
*/
118-
public function test(Request $request): JsonResponse
103+
public function test(TestDataSourceRequest $request): JsonResponse
119104
{
120-
$validated = $request->validate([
121-
'type' => 'required|in:database,url,api',
122-
'config' => 'required|array',
123-
]);
124-
125105
try {
106+
$validated = $request->validated();
126107
$result = $this->dataSourceService->testConnection(
127108
$validated['config'],
128109
$validated['type']

app/Http/Controllers/SearchController.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace App\Http\Controllers;
44

5+
use App\Http\Requests\SearchRequest;
56
use App\Models\Document;
67
use App\Services\DataSourceService;
78
use Illuminate\Http\Request;
@@ -19,15 +20,8 @@ public function __construct(DataSourceService $dataSourceService)
1920
/**
2021
* Search documents using the Python AI search script
2122
*/
22-
public function search(Request $request): JsonResponse
23+
public function search(SearchRequest $request): JsonResponse
2324
{
24-
$request->validate([
25-
'query' => 'required|string|min:1',
26-
'limit' => 'integer|min:1|max:100',
27-
'include_documents' => 'boolean',
28-
'include_data_sources' => 'boolean',
29-
]);
30-
3125
$query = $request->input('query');
3226
$limit = $request->input('limit', 5);
3327
$includeDocuments = $request->boolean('include_documents', true);

app/Http/Controllers/Settings/PasswordController.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace App\Http\Controllers\Settings;
44

55
use App\Http\Controllers\Controller;
6+
use App\Http\Requests\Settings\UpdatePasswordRequest;
67
use Illuminate\Http\RedirectResponse;
78
use Illuminate\Http\Request;
89
use Illuminate\Validation\Rules\Password;
@@ -22,15 +23,10 @@ public function edit(): Response
2223
/**
2324
* Update the user's password.
2425
*/
25-
public function update(Request $request): RedirectResponse
26+
public function update(UpdatePasswordRequest $request): RedirectResponse
2627
{
27-
$validated = $request->validate([
28-
'current_password' => ['required', 'current_password'],
29-
'password' => ['required', Password::defaults(), 'confirmed'],
30-
]);
31-
3228
$request->user()->update([
33-
'password' => $validated['password'],
29+
'password' => $request->validated()['password'],
3430
]);
3531

3632
return back();

app/Http/Controllers/Settings/ProfileController.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace App\Http\Controllers\Settings;
44

55
use App\Http\Controllers\Controller;
6+
use App\Http\Requests\Settings\DestroyProfileRequest;
67
use App\Http\Requests\Settings\ProfileUpdateRequest;
78
use Illuminate\Contracts\Auth\MustVerifyEmail;
89
use Illuminate\Http\RedirectResponse;
@@ -43,12 +44,8 @@ public function update(ProfileUpdateRequest $request): RedirectResponse
4344
/**
4445
* Delete the user's profile.
4546
*/
46-
public function destroy(Request $request): RedirectResponse
47+
public function destroy(DestroyProfileRequest $request): RedirectResponse
4748
{
48-
$request->validate([
49-
'password' => ['required', 'current_password'],
50-
]);
51-
5249
$user = $request->user();
5350

5451
Auth::logout();
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace App\Http\Requests;
4+
5+
use Illuminate\Foundation\Http\FormRequest;
6+
7+
class BatchStoreDocumentRequest extends FormRequest
8+
{
9+
/**
10+
* Determine if the user is authorized to make this request.
11+
*/
12+
public function authorize(): bool
13+
{
14+
return true;
15+
}
16+
17+
/**
18+
* Get the validation rules that apply to the request.
19+
*
20+
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
21+
*/
22+
public function rules(): array
23+
{
24+
return [
25+
'documents' => 'required|array',
26+
'documents.*.title' => 'required|string|max:255',
27+
'documents.*.path' => 'nullable|string|max:1000',
28+
'documents.*.body' => 'required|string',
29+
'documents.*.tags' => 'array',
30+
'documents.*.metadata' => 'array'
31+
];
32+
}
33+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
namespace App\Http\Requests;
4+
5+
use Illuminate\Foundation\Http\FormRequest;
6+
7+
class BulkDestroyDocumentRequest extends FormRequest
8+
{
9+
/**
10+
* Determine if the user is authorized to make this request.
11+
*/
12+
public function authorize(): bool
13+
{
14+
return true;
15+
}
16+
17+
/**
18+
* Get the validation rules that apply to the request.
19+
*
20+
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
21+
*/
22+
public function rules(): array
23+
{
24+
return [
25+
'ids' => 'required|array',
26+
'ids.*' => 'integer|exists:documents,id'
27+
];
28+
}
29+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace App\Http\Requests;
4+
5+
use Illuminate\Foundation\Http\FormRequest;
6+
7+
class BulkUploadRequest extends FormRequest
8+
{
9+
/**
10+
* Determine if the user is authorized to make this request.
11+
*/
12+
public function authorize(): bool
13+
{
14+
return true;
15+
}
16+
17+
/**
18+
* Get the validation rules that apply to the request.
19+
*
20+
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
21+
*/
22+
public function rules(): array
23+
{
24+
return [
25+
'file' => 'required_without:files|file|mimes:csv,txt,xlsx,xls,pdf,json,tsv|max:10240',
26+
'files' => 'required_without:file|array',
27+
'files.*' => 'file|mimes:csv,txt,xlsx,xls,pdf,json,tsv|max:10240'
28+
];
29+
}
30+
}

0 commit comments

Comments
 (0)