oz-tech/gerador-crud

This package is abandoned and no longer maintained. The author suggests using the epoc-tech/gerador-crud package instead.
There is no license information available for the latest version (v0.2.0) of this package.

Pacote para criação de crud no padrão de arquitetura action/usecase/repository.

v0.2.0 2023-05-26 19:46 UTC

This package is auto-updated.

Last update: 2023-05-26 20:14:58 UTC


README

🚧 Componente em constante evolução. 🚧

Inicialmente o componente só está respeitando o banco de dados do multiloja_base

Instalação 🎯

Para instalar o gerador de estruturas OZ você deve inicialmente instalar o package no seu composer no dev, pois como será somente em desenvolvimento não será utilizado em outro local

composer-require oz-tech/gerador-crud --dev

Ao final da instalação ao digitar o comando php artisan , irá te retornar uma lista de comandos e 2 deles os que foram instalados pelo composer

  1. oz:gerar-crud
  2. oz-gerar-estrutura

Crud

Gerar crud

Existem 2 jeitos de gerar o sistema de crud: Um deles é digitando somente o php artisan oz:gerar-crud , e seguir o passo a passo, ou fazer direto pela linha inteira do comando

php artisan oz:gerar-crud Modulo Tabela chave_primaria middleware

Modulo : o nome do módulo do seu crud, seja Produto, Empresa, Conta, o sistema vai criar todos os arquivos com o nome do módulo

Tabela: o nome da tabela em sí no seu banco de dados para fazer a pesquisa e trazer os campos para o arquivo de Models

Chave primária: Como nem todos os bancos são id como chave primária , aqui você pode colocar um valor customizado

Middleware: Caso sua rota seja protegida por algum middleware específico , caso contrário deixar em branco

Entendendo a arquitetura

Actions

Actions são responsáveis por uma única responsabilidade na chamada da rota, ou seja só existe um método em cada action para cada um ter somente uma responsabilidade |Arquivo|Descricao|Verbo| | --- | --- | --- | | Cadastrar{Model}Action | Cadastramento do item do módulo com base no Model que foi criado, já com os fillables preenchidos , nome da tabela e chave primária | POST | | Visualizar{Model}Action | Visualiza um único item cadastrado passando o id na querystring | GET | | Listar{Model}Action | Lista todos os itens cadastrados com paginação padrão | GET | | Editar{Model}Action | Edita um item, passando o id via querystring e os campos via body | PUT | | Excluir{Model}Action | Exclue um item, passando o id via querystring | DELETE |

Requests

As Requests são geradas automaticamente já trazendo todos os campos da tabela como required para customização de validação

UseCases

Cada Action possue um UseCase relacionado que por sua vez implementa uma classe abstrata de UseInterface que habilita somente um único método público que chamamos de handle, nele deve ser feita toda a regra de negócio podendo ter somente métodos privados para auxiliar no processamento e minificação dos seus métodos

Repository

Cada módulo possue seu respectivo repository , que é dividido em uma classe abstrata e uma classe concreta que é implementado todos os métodos

CustomRoutes

A cada módulo gerado, criamos separadamente em uma pasta as suas rotas sempre com o prefixo do módulo com os paths para cada uma das ações de cada uma das actions e automaticamente colocamos essas rotas no seu arquivo de routes/api.php , pois as rotas criadas são exclusivamente para apis.

Providers

Como estamos trabalhando com interfaces, precisamos registrá-las no nosso projeto para que possamos utilizar as classes abstratas injetadas no nossos componentes. Para isso também criamos dentro da pasta Providers a CustomProvider , contendo a ServiceProvider do módulo e também uma classe para fazer o loading desses providers que deve ser incluída por último na no arquivo config/app.php ,o seguinte provider: App\Providers\CustomProvider\LoadModulesProvider::class , fazendo isso seu sistema já vai estar apto a processar todos os providers que virão futuramente

Traits

Também contamos com uma trait de api response customizado que também é gerado automaticamente.