api resource refactoring

This commit is contained in:
Peter Papp
2021-08-27 09:41:14 +02:00
parent 5c6a873b02
commit e0e060e5a1
22 changed files with 173 additions and 79 deletions
@@ -2,6 +2,7 @@
namespace Domain\Browsing\Controllers;
use DB;
use Domain\Files\Resources\FilesCollection;
use Domain\Folders\Resources\FolderCollection;
use Domain\Folders\Resources\FolderResource;
@@ -15,6 +15,7 @@ class FileResource extends JsonResource
*/
public function toArray($request)
{
// TODO: optimize created_at/updated_at conversion because of performance issue
return [
'data' => [
'id' => $this->id,
@@ -15,7 +15,7 @@ class UpdateFolderPropertyAction
$folder = Folder::find($id);
// Set default folder icon
if ($request->emoji === 'default') {
if ($request->input('emoji') === 'default') {
$folder->update([
'emoji' => null,
'color' => null,
@@ -2,6 +2,7 @@
namespace Domain\Folders\Controllers;
use Auth;
use Domain\Folders\Resources\FolderResource;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
use Domain\Folders\Actions\CreateFolderAction;
@@ -30,6 +31,6 @@ class CreateFolderController extends Controller
// CreateFolder
$folder = ($this->createFolder)($request);
return response($folder, 201);
return response(new FolderResource($folder), 201);
}
}
@@ -11,6 +11,7 @@ class FolderResource extends JsonResource
{
public function toArray($request): array
{
// TODO: optimize created_at/updated_at conversion because of performance issue
return [
'data' => [
'id' => $this->id,
@@ -1,7 +1,8 @@
<?php
namespace Domain\Items\Actions;
use Illuminate\Database\Eloquent\Model;
use Domain\Files\Resources\FileResource;
use Domain\Folders\Resources\FolderResource;
use Domain\Items\Requests\RenameItemRequest;
class RenameFileOrFolderAction
@@ -12,7 +13,8 @@ class RenameFileOrFolderAction
public function __invoke(
RenameItemRequest $request,
string $id,
): Model {
): FolderResource|FileResource|array {
// Get item
$item = get_item($request->input('type'), $id);
@@ -21,7 +23,11 @@ class RenameFileOrFolderAction
'name' => $request->input('name'),
]);
if ($request->input('type') === 'folder') {
return new FolderResource($item);
}
// Return updated item
return $item;
return new FileResource($item);
}
}
@@ -3,6 +3,8 @@ namespace Domain\Items\Controllers;
use Auth;
use App\Http\Controllers\Controller;
use Domain\Files\Resources\FileResource;
use Domain\Folders\Resources\FolderResource;
use Illuminate\Database\Eloquent\Model;
use Domain\Items\Requests\RenameItemRequest;
use Domain\Items\Actions\RenameFileOrFolderAction;
@@ -24,7 +26,7 @@ class RenameFileOrFolderController extends Controller
public function __invoke(
RenameItemRequest $request,
string $id,
): Model | array {
): FileResource|FolderResource|array {
if (is_demo_account(Auth::user()->email)) {
return ($this->fakeRenameFileOrFolder)($request, $id);
}