Skip to content

Instantly share code, notes, and snippets.

@luckys383
Last active June 17, 2019 11:00
Show Gist options
  • Save luckys383/12109fcc2a2e45677e353e7d2ded4665 to your computer and use it in GitHub Desktop.
Save luckys383/12109fcc2a2e45677e353e7d2ded4665 to your computer and use it in GitHub Desktop.
Repository Pattern: CRUD
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Http\Requests\Api\CreatePostRequest;
use App\Http\Requests\Api\UpdatePostRequest;
use App\Repositories\PostsRepository;
use Exception;
use Illuminate\Http\Request;
class PostsController extends Controller
{
protected $repository;
public function __construct(PostsRepository $repository)
{
$this->repository = $repository;
}
/**
* get list of all the posts.
*
* @param $request: Illuminate\Http\Request
* @return json response
*/
public function index(Request $request)
{
$items = $this->repository->paginate($request);
return response()->json(['items' => $items]);
}
/**
* store post data to database table.
*
* @param $request: App\Http\Requests\CreatePostRequest
* @return json response
*/
public function store(CreatePostRequest $request)
{
try {
$item = $this->repository->store($request);
return response()->json(['item' => $item]);
} catch (Exception $e) {
return response()->json(['message' => $e->getMessage()], $e->getStatus());
}
}
/**
* update post data to database table.
*
* @param $request: App\Http\Requests\UpdatePostRequest
* @return json response
*/
public function update($id, UpdatePostRequest $request)
{
try {
$item = $this->repository->update($id, $request);
return response()->json(['item' => $item]);
} catch (Exception $e) {
return response()->json(['message' => $e->getMessage()], $e->getStatus());
}
}
/**
* get single item by id.
*
* @param integer $id: integer post id.
* @return json response.
*/
public function show($id)
{
try {
$item = $this->repository->show($id);
return response()->json(['item' => $item]);
} catch (Exception $e) {
return response()->json(['message' => $e->getMessage()], $e->getStatus());
}
}
/**
* delete post by id.
*
* @param integer $id: integer post id.
* @return json response.
*/
public function delete($id)
{
try {
$this->repository->delete($id);
return response()->json([], 204);
} catch (Exception $e) {
return response()->json(['message' => $e->getMessage()], $e->getStatus());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment