adityadarma/laravel-service-repository

Create pattern service and repository with easy

1.1.8 2024-05-18 15:54 UTC

This package is auto-updated.

Last update: 2024-05-18 15:54:44 UTC


README

Requirement

  • Minimum PHP ^8.0
  • Laravel ^9.x

Installation

You can install the package via composer for latest version

composer require adityadarma/laravel-service-repository

Install the base service part of core base service:

php artisan service-repository:install

Usage

*Service

Create service

php artisan make:service nameService

Used on controller

protected NameService $nameService;

public function __construct(
    NameService $nameService
)
{
    $this->nameService = $nameService;
}

public function data()
{
    $this->nameService->functionName()->getData();
}

public function json(Request $request)
{
    $this->nameService->functionName()->toJson();
}

public function withResource(Request $request)
{
    $this->nameService->functionName()->toJsonFromResource(ClassResource::class);
}

Use Service & Exception

Every all exception, must have handle to class CustomException

public function nameMethod()
{
    try {
         .........
         if (false) {
            throw new CustomException('Error exception');
         }
        ..........
        // Call toJsonFromResource at controller
        return $this->setData($data)
            ->setMessage('Message data')
            ->setCode(200);
        // OR
        // Call toJson at controller
        return $this->setData($data)
            ->setResource(ClassResource::class)
            ->setMessage('Message data')
            ->setCode(200);
    } catch (Exception $e) {
        return $this->exceptionResponse($e);
    }
}

*Repository

Create repository

php artisan make:repository nameRepository --model
  • --model will create repository with construct model

You can use general function on trait "GeneralFunctionRepository".

Used on service

protected NameRepository $nameRepository;

public function __construct(
    NameRepository $nameRepository
)
{
    $this->nameRepository = $nameRepository;
}

public function data()
{
    $this->nameRepository->functionName();
}

*Request

php artisan make:request nameRequest --single
  • --single will make all method to single file request (store, update, delete)

Command request is customized, have failedValidation to consistent API response. I also added an argument, so that we can carry out validation in one FormRequest file. Add function messages to custom response attribute message

*Model

php artisan make:model name --trait --repository
  • --trait will file trait to use on model like accessor, mutator, relationship and scope
  • --repository will create file repository with construct model

Command model is customized, we add 2 argument type. You can separate it into traits (accessor, mutator, relationship and scope) and add file repository.

License

This Package is licensed under the MIT license. Enjoy!