Skip to content

Commit

Permalink
Add API Response Trait
Browse files Browse the repository at this point in the history
  • Loading branch information
YasserElgammal committed Apr 3, 2024
1 parent 6fea9c6 commit 262f151
Show file tree
Hide file tree
Showing 4 changed files with 210 additions and 174 deletions.
10 changes: 7 additions & 3 deletions app/Http/Controllers/Api/ApiCategoryController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,24 @@

use App\Http\Controllers\Controller;
use App\Http\Resources\CategoryResource;
use App\Http\Resources\GeneralResource;
use App\Models\Category;
use App\Traits\ApiResponse;

class ApiCategoryController extends Controller
{
use ApiResponse;

public function index()
{
$categories = Category::paginate(15);
return CategoryResource::collection($categories);

return $this->retrieveReponse(data: CategoryResource::collection($categories));
}

public function show($id)
{
$category = Category::with('posts')->whereId($id)->firstOrFail();
return CategoryResource::make($category);

return $this->retrieveReponse(data: CategoryResource::make($category));
}
}
10 changes: 7 additions & 3 deletions app/Http/Controllers/Api/ApiPostController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,24 @@

use App\Http\Controllers\Controller;
use App\Http\Resources\PostResource;
use App\Http\Resources\SimplePostResource;
use App\Models\Post;
use App\Traits\ApiResponse;

class ApiPostController extends Controller
{
use ApiResponse;

public function index()
{
$posts = Post::with(['user:id,name', 'category:id,name', 'tags:id,name'])->whereStatus(true)->orderByDesc('id')->paginate(15);
return PostResource::collection($posts);

return $this->retrieveReponse(data: PostResource::collection($posts));
}

public function show($id)
{
$post = Post::with(['user:id,name', 'category:id,name', 'tags:id,name', 'comments.user'])->whereId($id)->whereStatus(true)->firstOrFail();
return PostResource::make($post);

return $this->retrieveReponse(data: PostResource::make($post));
}
}
23 changes: 23 additions & 0 deletions app/Traits/ApiResponse.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

namespace App\Traits;

use Illuminate\Http\Response;

trait ApiResponse
{
public function retrieveReponse($message = null, mixed $data = null, $code = Response::HTTP_OK)
{
return $this->responseHandle(status: true, message: $message, data: $data, code: $code);
}

private function responseHandle(bool $status, string $message = null, mixed $data = null, int $code)
{
$response = [
'status' => $status,
'message' => $message,
'data' => $data?->response()->getData(true),
];
return response($response, $code);
}
}
Loading

0 comments on commit 262f151

Please sign in to comment.