epoc-tech / gerador-crud
Pacote para criação de crud no padrão de arquitetura action/usecase/repository.
Requires
- php: ^8.0.2
- php-school/cli-menu: dev-master
Requires (Dev)
- fakerphp/faker: 2.x-dev
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
- oz:gerar-crud
- oz-gerar-estrutura
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.