hitocean / crud-generator
This is my package crud-generator
Fund package maintenance!
Hitocean
Installs: 2 251
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 2
Requires
- php: ^8.1
- illuminate/contracts: ^10.0||^11.0
- laravel/prompts: ^0.1.24
- nette/php-generator: ^4.1
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
This package is auto-updated.
Last update: 2024-11-15 14:44:57 UTC
README
Installation
You can install the package via composer:
composer require hitocean/crud-generator
Usage
Configuracion de modelo
php artisan make:hit-model-config
Este comando permite generar un archivo de configuracion para la generacion de un modelo. Este archivo va a estar situado en la carpeta generators/models.
El archivo generado se puede ver asi.
{ "modelName": "Company", "root_folder": "src/Domain/Company/Models", "root_namespace": "Src\\Domain\\Company\\Models", "tableName": "companies", "crud": true, "attributes": [ { "name": "name", "type": "string" }, { "name": "email", "type": "string" }, { "name": "address", "type": "?string" } ] }
En este archivo se pueden modificar todos los valores que se deseen antes de generar los archivos para el modelo.
Crear Modelo
php artisan make:hit-model
Este comando permite generar un modelo con los atributos y relaciones que se definieron en el archivo de configuracion. Va a generar los siguientes archivos:
- Modelo
- Factory
- Migracion
Es importante destacar que al correr el comando se van a tratar de crear todos los archivos dentro de generators/models. Por lo que si un modelo ya esta creado lo va a intentar reemplazar.
Configuracion de controlador
php artisan make:hit-controller-config
Al igual que para con los modelos, este comando crea un archivo de configuracion con el que luego se creara el controlador. Este archivo se crea en la carpeta generators/controllers.
Consideraciones
- Es necesario que el modelo sobre el cual se va a generar el controlador ya este creado y migrado.
- Al ejecutar el comando nos va a solicitar que elijamos que metodos de un crud queremos generar, para marcarlos hay que tocar la barra espaciadora.
El archivo generado se puede ver asi:
{ "controller_name": "CompanyController", "root_folder": "src/Application/Company/Controllers", "root_namespace": "Src\\Application\\Company\\Controllers", "model_import": "Src\\Domain\\Company\\Models\\Company", "test_path": "tests/Application/Company/Controllers/CompanyControllerTest", "methods": [ { "name": "index", "route_method": "get", "data_class_import": null, "data_class_path": null, "resource_class_import": "Src\\Application\\Company\\Resources\\IndexCompanyResource", "resource_class_path": "src/Application/Company/Resources/IndexCompanyResource", "inputs": [], "outputs": [ { "name": "id", "type": "int" }, { "name": "name", "type": "string" }, { "name": "email", "type": "string" }, { "name": "address", "type": "string" }, { "name": "created_at", "type": "date" }, { "name": "updated_at", "type": "date" } ] }, { "name": "store", "route_method": "post", "data_class_import": "Src\\Application\\Company\\Data\\StoreCompanyData", "data_class_path": "src/Application/Company/Data/StoreCompanyData", "resource_class_import": null, "resource_class_path": null, "inputs": [ { "name": "id", "type": "int" }, { "name": "name", "type": "string" }, { "name": "email", "type": "string" }, { "name": "address", "type": "string" }, { "name": "created_at", "type": "date" }, { "name": "updated_at", "type": "date" } ], "outputs": [] }, { "name": "update", "route_method": "put", "data_class_import": "Src\\Application\\Company\\Data\\UpdateCompanyData", "data_class_path": "src/Application/Company/Data/UpdateCompanyData", "resource_class_import": null, "resource_class_path": null, "inputs": [ { "name": "id", "type": "int" }, { "name": "name", "type": "string" }, { "name": "email", "type": "string" }, { "name": "address", "type": "string" }, { "name": "created_at", "type": "date" }, { "name": "updated_at", "type": "date" } ], "outputs": [] }, { "name": "destroy", "route_method": "delete", "data_class_import": null, "data_class_path": null, "resource_class_import": null, "resource_class_path": null, "inputs": [], "outputs": [] }, { "name": "show", "route_method": "get", "data_class_import": null, "data_class_path": null, "resource_class_import": "Src\\Application\\Company\\Resources\\ShowCompanyResource", "resource_class_path": "src/Application/Company/Resources/ShowCompanyResource", "inputs": [], "outputs": [ { "name": "id", "type": "int" }, { "name": "name", "type": "string" }, { "name": "email", "type": "string" }, { "name": "address", "type": "string" }, { "name": "created_at", "type": "date" }, { "name": "updated_at", "type": "date" } ] } ] }
Crear controlador
php artisan make:hit-controller
IMPORTANTE: Se van a crear todos los controladores que esten dentro de la carpeta generators/controllers. En caso de que ya existan los va a sobreescribir.
Al ejecutar este comando se van a crear los siguientes archivos:
- Controller.
- Data.
- Resource.
- Test.
Consideraciones
- Es necesario registrar la ruta donde corresponda, el paquete no lo hace automaticamente.
- Al UpdateData que se genera no tiene en cuenta que viene un route parameter hay que agregarselo manualmente. EJ: #[FromRouteParameter('company')]
- las relaciones en los controladores no estan contempladas aun.
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.