gerador-crud
v1.4.0
Published
CLI tool to generate CRUD APIs from MySQL databases with migrations, documentation, and testing
Maintainers
Readme
gerador-crud
Gerador CLI para criar APIs CRUD em Node.js a partir de bancos MySQL, com arquitetura em camadas, documentacao, testes e migracoes.
Instalacao global
npm install -g gerador-crudComando principal: gerador-crud
Atalho: gcrud
Fluxo basico
- Crie uma pasta para guardar os arquivos de entrada do gerador.
- Opcional: adicione um arquivo
.envnessa pasta com as credenciais do banco. - Rode
gerador-crud --initpara criar ou atualizar primeiro odb.config.jsone depois oapi.config.json. - Ajuste o
db.config.jsone oapi.config.json. - Rode
gerador-crudpara gerar o projeto.
Se db.config.json nao existir, a CLI pergunta diretorio de saida, host, usuario, senha, banco e porta no terminal e cria o arquivo automaticamente.
Por padrao:
- entrada: diretorio atual
- saida:
distdentro do diretorio atual (quando--outputnao for informado) - banco:
db.config.jsondentro do diretorio de entrada - config:
api.config.jsondentro do diretorio de entrada - env:
.envdentro do diretorio de entrada
Flags da CLI
gerador-crud --init
gcrud --init
gerador-crud --input ./meu-projeto
gerador-crud --input ./entrada --output ./saida
gerador-crud --input ./entrada --db-config ./configs/db.config.json
gerador-crud --input ./entrada --config ./configs/api.config.json --env ./configs/.env
gerador-crud --input ./entrada --lang pt
gerador-crud --help
gerador-crud --input ./entrada --default-configFlags suportadas:
--input,-i: diretorio de entrada--output,-o: diretorio onde os projetos gerados serao salvos--db-config,-b: caminho do JSON com as conexoes dos bancos--config,-c: caminho doapi.config.json--env,-e: caminho do arquivo.env--lang,-l: idioma das mensagens de erro da API gerada (enoupt)--dir,-d: alias legado para--input--help,-h: mostra ajuda da CLI--init: introspecta os bancos e cria ou atualiza os arquivos de configuracao--default-config,-dc: ignora ajustes manuais e usaapi.config.jsoncom configuracoes padrao
Com --default-config, a CLI introspecta os bancos, cria/atualiza o api.config.json com defaults (tabelas e rotas habilitadas) e segue direto para a geracao da API no mesmo comando.
Ordem de criacao dos arquivos
Ao rodar gerador-crud --init, a CLI executa nesta ordem:
- cria ou atualiza o
db.config.json - introspecta todos os bancos configurados nesse arquivo
- cria ou atualiza o
api.config.json
Exemplo de db.config.json com um banco
{
"defaultDatabase": "default",
"databases": {
"default": {
"host": "localhost",
"user": "root",
"password": "sua_senha",
"database": "meu_banco",
"port": 3306
}
}
}Exemplo de db.config.json com varios bancos
{
"defaultDatabase": "core",
"databases": {
"core": {
"host": "localhost",
"user": "root",
"password": "senha_core",
"database": "core_db",
"port": 3306
},
"audit": {
"host": "localhost",
"user": "root",
"password": "senha_audit",
"database": "audit_db",
"port": 3306
}
}
}Exemplo de api.config.json com varios bancos
{
"global": {
"language": "en",
"swagger": true,
"docs_md": true,
"docs_html": true,
"docs_technical": true,
"tests": true,
"prettier": true,
"databaseConfig": {
"preferEnvCredentials": true
},
"migrations": {
"enabled": true,
"includeSourceData": false
}
},
"defaultDatabase": "core",
"databases": {
"core": {
"enabled": true,
"outputDir": "core",
"tables": {
"users": {
"enabled": true,
"routes": {
"getAll": true,
"getById": true,
"getByIdWithRelations": true,
"create": true,
"createBulk": true,
"update": true,
"updateBulk": true,
"delete": true,
"deleteBulk": true,
"search": true
},
"customRoutes": []
}
}
},
"audit": {
"enabled": true,
"outputDir": "audit",
"tables": {
"logs": {
"enabled": true,
"routes": {
"getAll": true,
"getById": true,
"getByIdWithRelations": true,
"create": true,
"createBulk": true,
"update": true,
"updateBulk": true,
"delete": true,
"deleteBulk": true,
"search": true
},
"customRoutes": []
}
}
}
}
}Como funciona a geracao multi-banco
- cada banco configurado em
db.config.jsone introspectado no--init - cada banco aparece em
api.config.jsondentro dedatabases - cada banco habilitado gera um projeto separado na saida
- se houver mais de um banco habilitado, o gerador cria uma subpasta por banco dentro de
dist - se houver apenas um banco habilitado, o projeto continua sendo gerado diretamente em
dist
Flag para credenciais do .env
No api.config.json, a flag abaixo controla a prioridade entre .env e db.config.json:
{
"global": {
"databaseConfig": {
"preferEnvCredentials": true
}
}
}Comportamento:
true: os valores vindos do.envsempre sobrescrevem os dodb.config.jsonfalse: odb.config.jsontem prioridade e o.envnao sobrescreve os valores existentes
O padrao agora e true.
Exemplo de uso com varios bancos
gerador-crud --input ./generator-config --output ./apps --init
gerador-crud --input ./generator-config --output ./appsNesse cenario:
- a CLI le
.env,db.config.jsoneapi.config.jsonem./generator-config - se
coreeauditestiverem habilitados, o resultado sera algo como:./apps/core./apps/audit
Exemplo de .env
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=sua_senha
DB_NAME=meu_banco
DB_PORT=3306
AUTO_INSTALL_AND_FORMAT=true
MIGRATIONS_INCLUDE_SOURCE_DATA=false
DEBUG=falseObservacao:
- o
.envpode sobrescrever as credenciais dodb.config.jsonquandoglobal.databaseConfig.preferEnvCredentials=true - para varios bancos, o arquivo principal passa a ser o
db.config.json
Estrutura do projeto gerado
src/configsrc/controllerssrc/servicessrc/repositoriessrc/modelssrc/routessrc/middlewaressrc/docstestsmigrationsapi-client
Migracoes
Quando habilitadas no api.config.json, cada projeto gerado inclui:
migrations/001_schema.sqlmigrations/002_seed.sqlsrc/scripts/migrate.jssrc/scripts/create-seed.js
Comandos no projeto gerado:
npm run migrate
npm run migrate:with-seed
npm run migrate:with-seed 002
npm run migrate:dry-run
npm run seed:new nome_da_seedObservacoes
- o diretorio de saida base e limpo antes de uma nova geracao
- a instalacao de dependencias roda em cada projeto gerado
- se
AUTO_INSTALL_AND_FORMAT=false, o gerador apenas escreve os arquivos
