library baserepo
Base repository
jsdecena/baserepo
Base repository
- Monday, July 23, 2018
- by jsdecena
- Repository
- 1 Watchers
- 1 Stars
- 235 Installations
- PHP
- 0 Dependents
- 0 Suggesters
- 1 Forks
- 0 Open issues
- 3 Versions
- 0 % Grown
Base Repository Package
, (*1)
How to install
-
Run in your terminal composer require jsdecena/baserepo
, (*2)
-
In your repository class, extend it so you can use the methods readily available., (*3)
namespace App\Repositories;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Database\QueryException;
use Jsdecena\Baserepo\BaseRepository;
class UserRepository extends BaseRepository {
public function __construct(User $user)
{
parent::__construct($user);
}
public function createUser(array $data) : User
{
try {
return $this->create($data);
} catch (QueryException $e) {
throw new \Exception($e);
}
}
}
- Then, use it in your controller.
use App\Http\Controllers\Controller;
use App\Repositories\UserRepository;
use App\User;
class MyController extends Controller {
private $userRepository;
/**
*
* Inject your repository or the interface here
*/
public function __construct(UserRepository $userRepository)
{
$this->userRepository = $userRepository;
}
public function index()
{
$user = $this->userRepository->all();
return response()->json($user);
}
public function store(Request $request)
{
// do data validation
try {
$user = $this->userRepository->createUser($request->all());
return response()->json($user, 201);
} catch (Illuminate\Database\QueryException $e) {
return response()->json([
'error' => 'user_cannot_create',
'message' => $e->getMessage()
]);
}
}
public function show($id)
{
// do data validation
try {
$user = $this->userRepository->findOneOrFail($id);
return response()->json($user);
} catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) {
return response()->json([
'error' => 'user_no_found',
'message' => $e->getMessage()
]);
}
}
public function update(Request $request, $id)
{
// do data validation
try {
$user = $this->userRepository->findOneOrFail($id);
// You can also do this now, so you would not have to instantiate again the repository
$this->userRepository->update($request->all(), $user);
return response()->json($user);
} catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) {
return response()->json([
'error' => 'user_no_found',
'message' => $e->getMessage()
]);
} catch (Illuminate\Database\QueryException $e) {
return response()->json([
'error' => 'user_cannot_update',
'message' => $e->getMessage()
]);
}
}
public function destroy($id)
{
// do data validation
try {
$user = $this->userRepository->findOneOrFail($id);
// Create an instance of the repository again
// but now pass the user object.
// You can DI the repo to the controller if you do not want this.
$userRepo = new UserRepository($user);
$userRepo->delete()
return response()->json(['data' => 'User deleted.']);
} catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) {
return response()->json([
'error' => 'user_no_found',
'message' => $e->getMessage()
]);
} catch (Illuminate\Database\QueryException $e) {
return response()->json([
'error' => 'user_cannot_delete',
'message' => $e->getMessage()
]);
}
}
}
Testing
Author
Jeff Simons Decena, (*4)
License
, (*5)
dev-master
9999999-dev
Base repository
Sources
Download
MIT
The Requires
The Development Requires
by
Jeff Simons Decena
v1.0.1
1.0.1.0
Base repository
Sources
Download
MIT
The Requires
The Development Requires
by
Jeff Simons Decena
v1.0.0
1.0.0.0
Base repository
Sources
Download
MIT
The Requires
The Development Requires
by
Jeff Simons Decena