{"id":23917937,"url":"https://github.com/nitoba/agro-migrator","last_synced_at":"2026-04-11T13:01:43.629Z","repository":{"id":271045419,"uuid":"902631245","full_name":"nitoba/agro-migrator","owner":"nitoba","description":"Ferramenta open-source para simplificar migrações de banco de dados do Agrotrace, oferecendo solução robusta e amigável para gerenciar estruturas complexas, garantir integridade dos dados e rastrear mudanças. Inclui geração automática de arquivos de migração.","archived":false,"fork":false,"pushed_at":"2025-01-17T15:14:46.000Z","size":377,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-23T20:15:35.026Z","etag":null,"topics":["bun","database","mysql","nodejs","sql"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nitoba.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-13T00:30:55.000Z","updated_at":"2025-01-17T15:14:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"f8bff083-eda7-4b58-8222-3a5134927e00","html_url":"https://github.com/nitoba/agro-migrator","commit_stats":null,"previous_names":["nitoba/agro-migrator"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nitoba/agro-migrator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitoba%2Fagro-migrator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitoba%2Fagro-migrator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitoba%2Fagro-migrator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitoba%2Fagro-migrator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nitoba","download_url":"https://codeload.github.com/nitoba/agro-migrator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitoba%2Fagro-migrator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265663008,"owners_count":23807465,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bun","database","mysql","nodejs","sql"],"created_at":"2025-01-05T13:11:23.855Z","updated_at":"2025-12-30T22:07:10.820Z","avatar_url":"https://github.com/nitoba.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\".previews/preview.jpeg\" align=\"center\" width=\"30%\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003ch1 align=\"center\"\u003eAGRO-MIGRATOR\u003c/h1\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\t\u003cem\u003eSemear Progresso, Colher Integridade de Dados\u003c/em\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"https://img.shields.io/github/license/nitoba/agro-migrator?style=default\u0026logo=opensourceinitiative\u0026logoColor=white\u0026color=00ff62\" alt=\"license\"\u003e\n\t\u003cimg src=\"https://img.shields.io/github/last-commit/nitoba/agro-migrator?style=default\u0026logo=git\u0026logoColor=white\u0026color=00ff62\" alt=\"last-commit\"\u003e\n\t\u003cimg src=\"https://img.shields.io/github/languages/top/nitoba/agro-migrator?style=default\u0026color=00ff62\" alt=\"repo-top-language\"\u003e\n\t\u003cimg src=\"https://img.shields.io/github/languages/count/nitoba/agro-migrator?style=default\u0026color=00ff62\" alt=\"repo-language-count\"\u003e\n\u003c/p\u003e\n\u003cbr\u003e\n\n\u003cdetails\u003e\u003csummary\u003eTabela de Conteúdos\u003c/summary\u003e\n\n- [📍 Visão Geral](#-visão-geral)\n- [👾 Funcionalidades](#-funcionalidades)\n- [📁 Estrutura do Projeto](#-estrutura-do-projeto)\n  - [📂 Índice do Projeto](#-índice-do-projeto)\n- [🚀 Começando](#-começando)\n  - [☑️ Pré-requisitos](#-pré-requisitos)\n  - [⚙️ Instalação](#-instalação)\n  - [🤖 Uso](#🤖-uso)\n  - [🧪 Testes](#🧪-testes)\n- [📌 Planejamento do Projeto](#-planejamento-do-projeto)\n- [🔰 Contribuindo](#-contribuindo)\n- [🎗 Licença](#-licença)\n- [🙌 Agradecimentos](#-agradecimentos)\n\n\u003c/details\u003e\n\u003chr\u003e\n\n## 📍 Visão Geral\n\n**Agro-Migrator** é um projeto open-source inovador projetado para simplificar migrações de banco de dados do Agrotrace. Ele oferece uma solução robusta e amigável para gerenciar estruturas complexas de bancos de dados, garantindo integridade dos dados e rastreabilidade de mudanças. Suas principais funcionalidades incluem geração automática de arquivos SQL, trilhas de auditoria abrangentes e serviços de migração personalizáveis. Ideal para desenvolvedores e administradores de banco de dados no setor agrícola que desejam aprimorar seus processos de gerenciamento de dados.\n\n---\n\n## 👾 Funcionalidades\n\n|     |     Funcionalidade      | Resumo                                                                                                                                                                                                                                                                                                |\n| :-- | :---------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| ⚙️  |     **Arquitetura**     | \u003cul\u003e\u003cli\u003eUsa uma combinação de TypeScript, SQL e scripts Shell.\u003c/li\u003e\u003cli\u003eOrganizado em diretórios core, infra e utils para separação de responsabilidades.\u003c/li\u003e\u003cli\u003eUtiliza padrões de fábrica para criação de instâncias de migração e de construtor para construção de arquivos de migração.\u003c/li\u003e\u003c/ul\u003e |\n| 🔩  | **Qualidade do Código** | \u003cul\u003e\u003cli\u003ePráticas rigorosas de codificação via `tsconfig.json`.\u003c/li\u003e\u003cli\u003eConfiguração de padrões de codificação e linting no `biome.json`.\u003c/li\u003e\u003cli\u003eTypeScript para tipagem estática e melhor qualidade de código.\u003c/li\u003e\u003c/ul\u003e                                                                             |\n| 📄  |    **Documentação**     | \u003cul\u003e\u003cli\u003eLinguagem principal: TypeScript com mix de JSON, SQL e scripts Shell.\u003c/li\u003e\u003cli\u003eGerenciador de pacotes: `Bun`.\u003c/li\u003e\u003cli\u003eInstalação clara e comandos de uso e teste bem definidos.\u003c/li\u003e\u003c/ul\u003e                                                                                                      |\n| 🔌  |     **Integrações**     | \u003cul\u003e\u003cli\u003eIntegração com `Bun` para gerenciamento de pacotes.\u003c/li\u003e\u003cli\u003eConexão com banco de dados usando `mysql2`.\u003c/li\u003e\u003cli\u003eIntegração com `typeorm` para mapeamento objeto-relacional.\u003c/li\u003e\u003c/ul\u003e                                                                                                         |\n| 🧩  |    **Modularidade**     | \u003cul\u003e\u003cli\u003eArquitetura modular com separação clara de responsabilidades.\u003c/li\u003e\u003cli\u003eInterfaces para definição de tipos e serviços.\u003c/li\u003e\u003cli\u003eGeradores, analisadores e serviços organizados em módulos distintos.\u003c/li\u003e\u003c/ul\u003e                                                                                   |\n| 🧪  |       **Testes**        | \u003cul\u003e\u003cli\u003eComandos de teste fornecidos via `Bun`.\u003c/li\u003e\u003cli\u003eDetalhes adicionais sobre os testes não mencionados no contexto atual.\u003c/li\u003e\u003c/ul\u003e                                                                                                                                                              |\n| ⚡️ |     **Desempenho**      | \u003cul\u003e\u003cli\u003eUsa `mysql2` para operações eficientes de banco de dados.\u003c/li\u003e\u003cli\u003eDetalhes adicionais sobre desempenho não mencionados no contexto atual.\u003c/li\u003e\u003c/ul\u003e                                                                                                                                           |\n| 🛡️  |      **Segurança**      | \u003cul\u003e\u003cli\u003eDetalhes de conexão com banco de dados gerenciados de forma segura via `migration.config.ts`.\u003c/li\u003e\u003cli\u003eDetalhes adicionais sobre segurança não mencionados no contexto atual.\u003c/li\u003e\u003c/ul\u003e                                                                                                        |\n| 📦  |    **Dependências**     | \u003cul\u003e\u003cli\u003eGerenciamento via `Bun`.\u003c/li\u003e\u003cli\u003eDependências principais: `typescript`, `mysql2`, `typeorm`, `zod`, `node-sql-parser`, e `winston`.\u003c/li\u003e\u003c/ul\u003e                                                                                                                                                 |\n| 🚀  |   **Escalabilidade**    | \u003cul\u003e\u003cli\u003eArquitetura modular que facilita a escalabilidade.\u003c/li\u003e\u003cli\u003eDetalhes adicionais sobre escalabilidade não mencionados no contexto atual.\u003c/li\u003e\u003c/ul\u003e                                                                                                                                              |\n\n---\n\n## 📁 Estrutura do Projeto\n\n```sh\n└── agro-migrator/\n    ├── README.md\n    ├── biome.json\n    ├── bun.lockb\n    ├── migration.config.ts\n    ├── package.json\n    ├── scripts\n    │   ├── consolidar-ts.sh\n    │   └── gerar-estrutura.sh\n    ├── src\n    │   ├── core\n    │   ├── index.ts\n    │   ├── infra\n    │   ├── tmp\n    │   └── utils\n    └── tsconfig.json\n```\n\n---\n\n## 🚀 Começando\n\n### ☑️ Pré-requisitos\n\nAntes de começar com o agro-migrator, certifique-se de que o ambiente de execução atende aos seguintes requisitos:\n\n- **Linguagem de Programação:** TypeScript\n- **Gerenciador de Pacotes:** Bun\n\n### ⚙️ Instalação\n\nInstale o agro-migrator usando os métodos abaixo:\n\n**Construir a partir do código-fonte:**\n\n1. Clone o repositório agro-migrator:\n\n```sh\n❯ git clone https://github.com/nitoba/agro-migrator\n```\n\n2. Navegue para o diretório do projeto:\n\n```sh\n❯ cd agro-migrator\n```\n\n3. Instale as dependências do projeto usando o Bun:\n\n```sh\n❯ bun install\n```\n\n4. (Opcional) Gere um executável para Linux:\n\n```sh\n❯ bun run build\n```\n\n5. (Opcional) Gere um executável para Windows:\n\n```sh\n❯ bun run build:win\n```\n\n---\n\n### 🤖 Uso\n\n## Configuração\n\n1. Crie um arquivo `migration.config.ts` na raiz do projeto com as seguintes configurações:\n\n   - `outputDir`: Define o diretório onde os arquivos de migração serão armazenados. Exemplo: `\"./src/migrations\"`.\n   - `sqlFilesDir`: Indica o diretório onde os arquivos SQL de entrada estão localizados. Exemplo: `\"./src/tmp\"`.\n   - `dbConnection`: Configurações de conexão com o banco de dados:\n     - `host`: Endereço do servidor do banco de dados. Exemplo: `\"localhost\"`.\n     - `port`: Porta do banco de dados. Geralmente `3306` para MySQL.\n     - `username`: Nome de usuário para autenticação no banco de dados.\n     - `password`: Senha do usuário do banco de dados.\n     - `database`: Nome do banco de dados a ser usado.\n\n   ```typescript\n   export default {\n     outputDir: \"./src/migrations\",\n     sqlFilesDir: \"./src/tmp\",\n     dbConnection: {\n       host: \"localhost\",\n       port: 3306,\n       username: \"seu_usuario\",\n       password: \"sua_senha\",\n       database: \"nome_do_banco\",\n     },\n   };\n   ```\n\n2. Certifique-se de que o diretório de saída (`outputDir`) e o diretório de arquivos SQL (`sqlFilesDir`) existam. 📂🗃️📝\n\n---\n\n## Como Usar\n\n### Executar a Ferramenta\n\nPara usar a versão compilada do Agro-Migrator, execute o binário gerado após a compilação. Por exemplo, no Linux:\n\n```bash\n./agro-migrator\n```\n\nNo Windows, você pode executar:\n\n```bash\nagro-migrator.exe\n```\n\nApós executar o comando, você verá uma interface interativa no terminal que solicitará as informações necessárias para a migração. Por exemplo:\n\n```\n🚀 Vamos criar uma migration? (Sim/Não)\n\u003e Sim\n\nQual tipo de migração você deseja criar?\n1. Criar tabelas\n2. Atualizar tabelas\n3. Routine\n4. Criação customizada\n\u003e 1\n\nQual o nome da migration?\n\u003e create_users_table\n\n✅ Migration criada com sucesso em: ./src/migrations/1735952020374-create_users_table.ts\n```\n\n2. Responda às perguntas no prompt interativo para definir o tipo de migração, nome e arquivo SQL (se aplicável).\n\n---\n\n## 📌 Planejamento do Projeto\n\n### Funcionalidades Implementadas:\n\n- Geração de migrations do tipo **create table**.\n- Geração de migrations do tipo **alter table**.\n- Criação de routines (procedures e funções).\n- Geração de migrations com SQL customizado fornecido.\n- Criação de migrations apenas com a estrutura inicial para que o desenvolvedor informe seu código posteriormente.\n\n### Funcionalidades Futuras:\n\n- Implementação de código para suporte à geração de statements de **drop**, permitindo desfazer migrations criadas.\n\n---\n\n## 🔰 Contribuindo\n\n- **💬 [Participe das Discussões](https://github.com/nitoba/agro-migrator/discussions):** Compartilhe insights, feedback ou faça perguntas.\n- **🐛 [Reporte Problemas](https://github.com/nitoba/agro-migrator/issues):** Envie bugs encontrados ou solicite novos recursos.\n- **💡 [Envie Pull Requests](https://github.com/nitoba/agro-migrator/blob/main/CONTRIBUTING.md):** Revise e envie suas contribuições.\n\n\u003cdetails closed\u003e\n\u003csummary\u003eDiretrizes para Contribuição\u003c/summary\u003e\n\n1. **Faça um Fork do Repositório**: Inicie fazendo um fork do projeto no GitHub.\n2. **Clone Localmente**: Clone o repositório para sua máquina:\n   ```sh\n   git clone https://github.com/nitoba/agro-migrator\n   ```\n3. **Crie uma Nova Branch**: Sempre trabalhe em uma nova branch:\n   ```sh\n   git checkout -b nova-feature-x\n   ```\n4. **Realize Suas Alterações**: Desenvolva e teste localmente.\n5. **Faça Commit das Alterações**: Inclua uma mensagem clara:\n   ```sh\n   git commit -m 'Implementada nova funcionalidade x.'\n   ```\n6. **Envie para o GitHub**:\n   ```sh\n   git push origin nova-feature-x\n   ```\n7. **Envie um Pull Request**: Explique as alterações e o motivo.\n8. **Revisão**: Após aprovado, será integrado à branch principal.\n\n\u003c/details\u003e\n\n---\n\n## 🎗 Licença\n\nEste projeto está protegido sob a [LICENÇA-SELECIONADA](https://choosealicense.com/licenses). Para mais detalhes, veja o arquivo [LICENSE](https://choosealicense.com/licenses).\n\n---\n\n## 🙌 Agradecimentos\n\n- Liste aqui recursos, colaboradores, inspirações, etc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitoba%2Fagro-migrator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnitoba%2Fagro-migrator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitoba%2Fagro-migrator/lists"}