use element update route
This commit is contained in:
parent
9cb968afd8
commit
1d9e2cff0a
4 changed files with 26 additions and 15 deletions
|
|
@ -55,7 +55,7 @@ class ElementController
|
|||
], 200);
|
||||
}
|
||||
|
||||
public function update(?int $id, Request $request): JsonResponse
|
||||
public function update(Request $request): JsonResponse
|
||||
{
|
||||
$iconImage = $this->uploadedFileInput($request, 'iconImage');
|
||||
$pdf = $this->uploadedFileInput($request, 'pdf');
|
||||
|
|
@ -63,7 +63,7 @@ class ElementController
|
|||
try {
|
||||
$element = $this->updateElement->execute(
|
||||
new UpdateElementRequest(
|
||||
id: $id,
|
||||
id: $this->intInput($request, 'elementId'),
|
||||
title: $this->stringInput($request, 'title'),
|
||||
description: $this->stringInput($request, 'description'),
|
||||
iconImageUrl: $this->stringInput(
|
||||
|
|
@ -98,6 +98,20 @@ class ElementController
|
|||
], 200);
|
||||
}
|
||||
|
||||
private function intInput(Request $request, string $key): ?int
|
||||
{
|
||||
$value = $request->input($key);
|
||||
if (is_int($value)) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
if (is_string($value) && ctype_digit($value)) {
|
||||
return (int) $value;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private function stringInput(Request $request, string $key): ?string
|
||||
{
|
||||
$value = $request->input($key);
|
||||
|
|
|
|||
|
|
@ -12,5 +12,5 @@ Route::get('/me', [AuthController::class, 'me'])
|
|||
->middleware(AuthMiddleware::class);
|
||||
Route::get('/sets', [SetController::class, 'index']);
|
||||
Route::get('/elements/{id}', [ElementController::class, 'show']);
|
||||
Route::post('/elements/{id}', [ElementController::class, 'update'])
|
||||
Route::post('/element/update', [ElementController::class, 'update'])
|
||||
->middleware(AuthMiddleware::class);
|
||||
|
|
|
|||
|
|
@ -179,7 +179,7 @@ class ElementControllerTest extends TestCase
|
|||
null,
|
||||
true,
|
||||
),
|
||||
]);
|
||||
], ['REQUEST_METHOD' => 'POST']);
|
||||
|
||||
$response = $this->controller->update($request);
|
||||
|
||||
|
|
@ -220,7 +220,7 @@ class ElementControllerTest extends TestCase
|
|||
null,
|
||||
true,
|
||||
),
|
||||
]);
|
||||
], ['REQUEST_METHOD' => 'POST']);
|
||||
|
||||
$response = $this->controller->update($request);
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ interface ErrorResponse {
|
|||
}
|
||||
|
||||
const API_BASE_URL = import.meta.env.VITE_API_BASE_URL as string
|
||||
const ELEMENT_UPDATE_URL = `${API_BASE_URL}/api/element/update`
|
||||
|
||||
export const useElementsStore = defineStore('elements', () => {
|
||||
const element = ref<Element | null>(null)
|
||||
|
|
@ -109,13 +110,11 @@ export const useElementsStore = defineStore('elements', () => {
|
|||
isSaving.value = true
|
||||
|
||||
try {
|
||||
const encodedElementId = encodeURIComponent(elementId)
|
||||
const elementUrl = `${API_BASE_URL}/api/elements/${encodedElementId}`
|
||||
const response = await fetch(elementUrl, {
|
||||
const response = await fetch(ELEMENT_UPDATE_URL, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
credentials: 'include',
|
||||
body: JSON.stringify(input),
|
||||
body: JSON.stringify({ elementId, ...input }),
|
||||
})
|
||||
|
||||
return await handleElementResponse(response, failureMessage)
|
||||
|
|
@ -132,11 +131,10 @@ export const useElementsStore = defineStore('elements', () => {
|
|||
isUploadingIconImage.value = true
|
||||
|
||||
try {
|
||||
const encodedElementId = encodeURIComponent(elementId)
|
||||
const elementUrl = `${API_BASE_URL}/api/elements/${encodedElementId}`
|
||||
const formData = new FormData()
|
||||
formData.append('elementId', elementId)
|
||||
formData.append('iconImage', file)
|
||||
const response = await fetch(elementUrl, {
|
||||
const response = await fetch(ELEMENT_UPDATE_URL, {
|
||||
method: 'POST',
|
||||
headers: { Accept: 'application/json' },
|
||||
credentials: 'include',
|
||||
|
|
@ -157,11 +155,10 @@ export const useElementsStore = defineStore('elements', () => {
|
|||
isUploadingPdf.value = true
|
||||
|
||||
try {
|
||||
const encodedElementId = encodeURIComponent(elementId)
|
||||
const elementUrl = `${API_BASE_URL}/api/elements/${encodedElementId}`
|
||||
const formData = new FormData()
|
||||
formData.append('elementId', elementId)
|
||||
formData.append('pdf', file)
|
||||
const response = await fetch(elementUrl, {
|
||||
const response = await fetch(ELEMENT_UPDATE_URL, {
|
||||
method: 'POST',
|
||||
headers: { Accept: 'application/json' },
|
||||
credentials: 'include',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue