api resource refactoring part 3

This commit is contained in:
Peter Papp
2021-08-27 11:01:44 +02:00
parent 174f2a2c1f
commit d299183ecd
16 changed files with 101 additions and 91 deletions
@@ -2,12 +2,12 @@
namespace Domain\Browsing\Controllers;
use App\Users\Models\User;
use Illuminate\Support\Collection;
use Domain\Files\Resources\FilesCollection;
use Illuminate\Support\Facades\Auth;
class BrowseLatestFilesController
{
public function __invoke(): Collection
public function __invoke(): array
{
$user = User::with([
'latestUploads' => fn ($query) => $query->sortable(['created_at' => 'desc']),
@@ -15,6 +15,9 @@ class BrowseLatestFilesController
->where('id', Auth::id())
->first();
return $user->latestUploads;
return [
'files' => new FilesCollection($user->latestUploads),
'root' => null,
];
}
}
@@ -2,14 +2,15 @@
namespace Domain\Browsing\Controllers;
use Domain\Files\Models\File;
use Domain\Files\Resources\FilesCollection;
use Domain\Folders\Resources\FolderCollection;
use Domain\Sharing\Models\Share;
use Domain\Folders\Models\Folder;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
class BrowseSharedItemsController
{
public function __invoke(): Collection
public function __invoke(): array
{
$user_id = Auth::id();
@@ -36,7 +37,10 @@ class BrowseSharedItemsController
->get();
// Collect folders and files to single array
return collect([$folders, $files])
->collapse();
return [
'folders' => new FolderCollection($folders),
'files' => new FilesCollection($files),
'root' => null,
];
}
}
@@ -2,7 +2,10 @@
namespace Domain\Browsing\Controllers;
use Domain\Files\Models\File;
use Domain\Files\Resources\FilesCollection;
use Domain\Folders\Models\Folder;
use Domain\Folders\Resources\FolderCollection;
use Illuminate\Http\Resources\Json\ResourceCollection;
use Illuminate\Support\Facades\Auth;
class BrowseTrashContentController
@@ -60,8 +63,9 @@ class BrowseTrashContentController
// Collect folders and files to single array
return [
'content' => collect([$folders, $files_trashed])->collapse(),
'folder' => $requestedFolder,
'folders' => new FolderCollection($folders),
'files' => new FilesCollection($files_trashed),
'root' => $requestedFolder,
];
}
}
@@ -2,8 +2,9 @@
namespace Domain\Browsing\Controllers;
use Domain\Files\Models\File;
use Domain\Files\Resources\FilesCollection;
use Domain\Folders\Models\Folder;
use Illuminate\Support\Collection;
use Domain\Folders\Resources\FolderCollection;
use Illuminate\Support\Facades\Auth;
use Domain\Items\Requests\SearchRequest;
@@ -11,7 +12,7 @@ class SearchFilesAndFoldersController
{
public function __invoke(
SearchRequest $request
): Collection {
): array {
$user_id = Auth::id();
$query = remove_accents(
@@ -19,17 +20,18 @@ class SearchFilesAndFoldersController
);
// Search files id db
$searched_files = File::search($query)
$files = File::search($query)
->where('user_id', $user_id)
->get();
$searched_folders = Folder::search($query)
$folders = Folder::search($query)
->where('user_id', $user_id)
->get();
// Collect folders and files to single array
return collect([$searched_folders, $searched_files])
->collapse()
->take(10);
return [
'folders' => new FolderCollection($folders),
'files' => new FilesCollection($files),
];
}
}
@@ -2,10 +2,13 @@
namespace Domain\Browsing\Controllers;
use Domain\Files\Models\File;
use Domain\Files\Resources\FilesCollection;
use Domain\Folders\Resources\FolderCollection;
use Domain\Sharing\Models\Share;
use Domain\Folders\Models\Folder;
use Domain\Sharing\Actions\ProtectShareRecordAction;
use Domain\Sharing\Actions\VerifyAccessToItemAction;
use Illuminate\Http\Resources\Json\ResourceCollection;
/**
* Browse shared folder
@@ -44,10 +47,10 @@ class VisitorBrowseFolderController
// Set thumbnail links for public files
$files->map(fn ($file) => $file->setPublicUrl($shared->token));
// Collect folders and files to single array
return [
'content' => collect([$folders, $files])->collapse(),
'folder' => $requestedFolder,
'folders' => new FolderCollection($folders),
'files' => new FilesCollection($files),
'root' => $requestedFolder,
];
}
}
@@ -1,12 +1,13 @@
<?php
namespace Domain\Browsing\Controllers;
use Domain\Files\Resources\FilesCollection;
use Domain\Folders\Resources\FolderCollection;
use Illuminate\Support\Arr;
use Illuminate\Http\Request;
use Domain\Files\Models\File;
use Domain\Sharing\Models\Share;
use Domain\Folders\Models\Folder;
use Illuminate\Support\Collection;
use App\Http\Controllers\Controller;
use Domain\Sharing\Actions\ProtectShareRecordAction;
@@ -23,7 +24,7 @@ class VisitorSearchFilesAndFoldersController extends Controller
public function __invoke(
Request $request,
Share $shared,
): Collection {
): array {
// Check ability to access protected share record
($this->protectShareRecord)($shared);
@@ -64,8 +65,9 @@ class VisitorSearchFilesAndFoldersController extends Controller
});
// Collect folders and files to single array
return collect([$folders, $files])
->collapse()
->take(10);
return [
'folders' => new FolderCollection($folders),
'files' => new FilesCollection($files),
];
}
}
-26
View File
@@ -84,32 +84,6 @@ class File extends Model
$this->public_access = $token;
}
/**
* Format created at date
*/
public function getCreatedAtAttribute(): string
{
return format_date(
set_time_by_user_timezone($this->attributes['created_at']),
__t('time')
);
}
/**
* Format deleted at date reformat
*/
public function getDeletedAtAttribute(): string | null
{
if (! $this->attributes['deleted_at']) {
return null;
}
return format_date(
set_time_by_user_timezone($this->attributes['deleted_at']),
__t('time')
);
}
/**
* Format fileSize
*/
+5 -2
View File
@@ -29,12 +29,15 @@ class FileResource extends JsonResource
'thumbnail' => $this->thumbnail,
'metadata' => $this->metadata,
'folder_id' => $this->folder_id,
'updated_at' => format_date(
'updated_at' => $this->updated_at,
'created_at' => $this->created_at,
'deleted_at' => $this->deleted_at,
/*'updated_at' => format_date(
set_time_by_user_timezone($this->updated_at), __t('time')
),
'created_at' => format_date(
set_time_by_user_timezone($this->created_at), __t('time')
),
),*/
],
'relationships' => [
$this->mergeWhen($this->shared, fn() => [
-15
View File
@@ -116,21 +116,6 @@ class Folder extends Model
return $folders + $files;
}
/**
* Format deleted at date reformat
*/
public function getDeletedAtAttribute(): string | null
{
if (! $this->attributes['deleted_at']) {
return null;
}
return format_date(
set_time_by_user_timezone($this->attributes['deleted_at']),
__t('time')
);
}
/**
* Get parent
*/
@@ -24,12 +24,14 @@ class FolderResource extends JsonResource
'isTeamFolder' => $this->team_folder,
'items' => $this->items,
'trashed_items' => $this->trashed_items,
'updated_at' => format_date(
'updated_at' => $this->updated_at,
'created_at' => $this->created_at,
/*'updated_at' => format_date(
set_time_by_user_timezone($this->updated_at), __t('time')
),
'created_at' => format_date(
set_time_by_user_timezone($this->created_at), __t('time')
),
),*/
],
'relationships' => [
$this->mergeWhen($this->teamMembers, fn() => [