Skip to content

Clean Architecture, SOLID, PHP 8.2, Laravel 9, RESTful API, Nginx, PostgreSQL 16, MySQL 8, CRUD, DTO, Enum, Docker Compose, Unit tests, Feature tests, SQL, Repository Criteria Pattern, Mocking Objects, Design Patterns, PHPUnit

Notifications You must be signed in to change notification settings

d-alejandro/laravel-code-examples

Repository files navigation

Laravel Code Examples

Topics

  • Back-end
  • Clean Architecture
  • Code coverage
  • CRUD
  • Dependency Injection
  • Design Patterns
  • Docker Compose
  • DTO
  • Enums
  • Feature tests
  • Interfaces
  • Laravel 9
  • Linux
  • Makefile
  • Mocking Objects
  • MySQL 8
  • Nginx
  • PHP 8.2
  • PHPUnit
  • PostgreSQL 16
  • Presenters
  • Repository Pattern (with criteria queries)
  • RESTful API
  • SOLID
  • SQL
  • Unit tests
  • Use Cases
  • Xdebug

Installation

  1. Clone this repository:
git clone git@github.com:d-alejandro/laravel-code-examples.git
  1. Go to 'laravel-code-examples' directory:
cd laravel-code-examples
  1. Create a new .env file:
cp .env.example .env
  1. Run following commands:
  • docker-compose build --no-cache
  • docker-compose up -d
  • docker-compose exec php-fpm composer install
  • docker-compose exec php-fpm php artisan key:generate
  • docker-compose exec php-fpm php artisan migrate
  • docker-compose exec php-fpm php artisan db:seed

Testing

To run the unit tests:

docker-compose exec php-fpm php artisan test --testsuite=Unit

To run the feature tests:

docker-compose exec php-fpm php artisan test --testsuite=Feature

To run the test coverage:

docker-compose exec php-fpm php artisan test --coverage
docker-compose exec php-fpm ./vendor/bin/phpunit --coverage-html ./storage/reports/coverage

API Endpoints

All Orders with pagination

  • Request URL: http://localhost:8081/api/orders?start=0&end=2&sort_column=id&sort_type=asc
  • Method: GET
  • Path: /orders
  • Headers: Accept:application/json, Content-Type:application/json
  • Parameters: start, end, sort_column, sort_type
  • Status Code: 200
  • Response:
{
    "data": [
        {
            "id": 10000001,
            "agency_name": "МКК ТверьВектор",
            "status": "prepayment",
            "is_confirmed": true,
            "is_checked": true,
            "rental_date": "21-12-2023",
            "user_name": "Марат Романович Яковлев",
            "transport_count": 3,
            "guest_count": 3,
            "admin_note": "Ну, душа, вот это так!"
        },
        {
            "id": 10000002,
            "agency_name": "ЗАО КазТехРечЛизинг",
            "status": "waiting",
            "is_confirmed": true,
            "is_checked": true,
            "rental_date": "27-12-2023",
            "user_name": "Сергеева Эльвира Андреевна",
            "transport_count": 3,
            "guest_count": 3,
            "admin_note": null
        }
    ]
}

Create Order

  • Request URL: http://localhost:8081/api/orders
  • Method: POST
  • Path: /orders
  • Headers: Accept:application/json, Content-Type:application/json
  • Parameters: agency_name, rental_date, guest_count, transport_count, user_name, email, phone
  • Status Code: 201
  • Response:
{
    "data": {
        "id": 10000011,
        "agency_name": "Test Agency Name",
        "status": "waiting",
        "is_confirmed": false,
        "is_checked": false,
        "rental_date": "22-12-2023",
        "user_name": "Test User Name",
        "transport_count": 1,
        "guest_count": 1,
        "admin_note": null,
        "note": null,
        "email": "test@test.ru",
        "phone": "71437854547",
        "confirmed_at": null,
        "created_at": "21-12-2023 12:22:33",
        "updated_at": "21-12-2023 12:22:33"
    }
}

Order Details

  • Request URL: http://localhost:8081/api/orders/10000011
  • Method: GET
  • Path: /orders/{id}
  • Headers: Accept:application/json, Content-Type:application/json
  • Status Code: 200
  • Response:
{
    "data": {
        "id": 10000011,
        "agency_name": "Test Agency Name",
        "status": "waiting",
        "is_confirmed": false,
        "is_checked": false,
        "rental_date": "22-12-2023",
        "user_name": "Test User Name",
        "transport_count": 1,
        "guest_count": 1,
        "admin_note": null,
        "note": null,
        "email": "test@test.ru",
        "phone": "71437854547",
        "confirmed_at": null,
        "created_at": "21-12-2023 12:22:33",
        "updated_at": "21-12-2023 12:22:33"
    }
}

Update Order

  • Request URL: http://localhost:8081/api/orders/10000011
  • Method: PUT
  • Path: /orders/{id}
  • Headers: Accept:application/json, Content-Type:application/json
  • Parameters: guest_count, transport_count, user_name, email, phone
  • Status Code: 200
  • Response:
{
    "data": {
        "id": 10000011,
        "agency_name": "Test Agency Name",
        "status": "waiting",
        "is_confirmed": false,
        "is_checked": false,
        "rental_date": "22-12-2023",
        "user_name": "Test User Name",
        "transport_count": 1,
        "guest_count": 1,
        "admin_note": null,
        "note": null,
        "email": "test@test.ru",
        "phone": "70000000001",
        "confirmed_at": null,
        "created_at": "21-12-2023 12:22:33",
        "updated_at": "21-12-2023 15:03:33"
    }
}

Delete Order

  • Request URL: http://localhost:8081/api/orders/10000011
  • Method: DELETE
  • Path: /orders/{id}
  • Headers: Accept:application/json, Content-Type:application/json
  • Status Code: 200
  • Response:
{
    "data": {
        "id": 10000011,
        "agency_name": "Test Agency Name",
        "status": "waiting",
        "is_confirmed": false,
        "is_checked": false,
        "rental_date": "22-12-2023",
        "user_name": "Test User Name",
        "transport_count": 1,
        "guest_count": 1,
        "admin_note": null,
        "note": null,
        "email": "test@test.ru",
        "phone": "70000000001",
        "confirmed_at": null,
        "created_at": "21-12-2023 12:22:33",
        "updated_at": "21-12-2023 15:13:30"
    }
}

About

Clean Architecture, SOLID, PHP 8.2, Laravel 9, RESTful API, Nginx, PostgreSQL 16, MySQL 8, CRUD, DTO, Enum, Docker Compose, Unit tests, Feature tests, SQL, Repository Criteria Pattern, Mocking Objects, Design Patterns, PHPUnit

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages