{"id":19004972,"url":"https://github.com/codeedu/micro-admin-videos-java","last_synced_at":"2025-07-04T18:37:31.138Z","repository":{"id":37661275,"uuid":"485444954","full_name":"codeedu/micro-admin-videos-java","owner":"codeedu","description":null,"archived":false,"fork":false,"pushed_at":"2022-08-20T17:04:40.000Z","size":398,"stargazers_count":36,"open_issues_count":0,"forks_count":14,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-17T10:24:52.551Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","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/codeedu.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}},"created_at":"2022-04-25T16:17:31.000Z","updated_at":"2025-03-21T12:37:19.000Z","dependencies_parsed_at":"2022-07-09T10:16:21.056Z","dependency_job_id":null,"html_url":"https://github.com/codeedu/micro-admin-videos-java","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeedu%2Fmicro-admin-videos-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeedu%2Fmicro-admin-videos-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeedu%2Fmicro-admin-videos-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeedu%2Fmicro-admin-videos-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codeedu","download_url":"https://codeload.github.com/codeedu/micro-admin-videos-java/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250303045,"owners_count":21408529,"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":[],"created_at":"2024-11-08T18:25:33.108Z","updated_at":"2025-04-22T18:50:35.842Z","avatar_url":"https://github.com/codeedu.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ccenter\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://user-images.githubusercontent.com/20674439/158480514-a529b310-bc19-46a5-ac95-fddcfa4776ee.png\" width=\"150\"/\u003e\u0026nbsp;\n    \u003cimg src=\"https://icon-library.com/images/java-icon-png/java-icon-png-15.jpg\"  width=\"150\" /\u003e\n  \u003c/p\u003e  \n  \u003ch1 align=\"center\"\u003e🚀 Microserviço: Admin do Catálogo de Vídeos com Java\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    Microserviço referente ao backend da Administração do Catálogo de Vídeos\u003cbr /\u003e\n    Utilizando Clean Architecture, DDD, TDD e as boas práticas atuais de mercado\n  \u003c/p\u003e\n\u003c/center\u003e\n\u003cbr /\u003e\n\n## Ferramentas necessárias\n\n- JDK 17\n- IDE de sua preferência\n- Docker\n\n## Como executar?\n\n1. Clonar o repositório:\n```sh\ngit clone https://github.com/codeedu/micro-admin-videos-java.git\n```\n\n2. Subir o banco de dados MySQL com Docker:\n```shell\ndocker-compose up -d\n```\n\n3. Executar as migrações do MySQL com o Flyway:\n```shell\n./gradlew flywayMigrate\n```\n\n4. Executar a aplicação como SpringBoot app:\n```shell\n./gradlew bootRun\n``` \n\n\u003e Também é possível executar como uma aplicação Java através do\n\u003e método main() na classe Main.java\n## Banco de dados\n\nO banco de dados principal é um MySQL e para subir localmente vamos utilizar o\nDocker. Execute o comando a seguir para subir o MySQL:\n\n```shell\ndocker-compose up -d\n```\n\nPronto! Aguarde que em instantes o MySQL irá estar pronto para ser consumido\nna porta 3306.\n\n### Migrações do banco de dados com Flyway\n\n#### Executar as migrações\n\nCaso seja a primeira vez que esteja subindo o banco de dados, é necessário\nexecutar as migrações SQL com a ferramenta `flyway`.\nExecute o comando a seguir para executar as migrações:\n\n```shell\n./gradlew flywayMigrate\n```\n\nPronto! Agora sim o banco de dados MySQL está pronto para ser utilizado.\n\n\u003cbr/\u003e\n\n#### Limpar as migrações do banco\n\nÉ possível limpar (deletar todas as tabelas) seu banco de dados, basta\nexecutar o seguinte comando:\n\n```shell\n./gradlew flywayClean\n```\n\nMAS lembre-se: \"Grandes poderes, vem grandes responsabilidades\".\n\n\u003cbr/\u003e\n\n#### Reparando as migrações do banco\n\nExiste duas maneiras de gerar uma inconsistência no Flyway deixando ele no estado de reparação:\n\n1. Algum arquivo SQL de migração com erro;\n2. Algum arquivo de migração já aplicado foi alterado (modificando o `checksum`).\n\nQuando isso acontecer o flyway ficará em um estado de reparação\ncom um registro na tabela `flyway_schema_history` com erro (`sucesso = 0`).\n\nPara executar a reparação, corrija os arquivos e execute:\n```shell\n./gradlew flywayRepair\n```\n\nCom o comando acima o Flyway limpará os registros com erro da tabela `flyway_schema_history`,\nna sequência execute o comando FlywayMigrate para tentar migrar-los novamente.\n\n\u003cbr/\u003e\n\n#### Outros comandos úteis do Flyway\n\nAlém dos comandos já exibidos, temos alguns outros muito úteis como o info e o validate:\n\n```shell\n./gradlew flywayInfo\n./gradlew flywayValidate\n```\n\nPara saber todos os comandos disponíveis: [Flyway Gradle Plugin](https://flywaydb.org/documentation/usage/gradle/info)\n\n\u003cbr/\u003e\n\n#### Para executar os comandos em outro ambiente\n\nLá no `build.gradle` configuramos o Flyway para lêr primeiro as variáveis de\nambiente `FLYWAY_DB`, `FLYWAY_USER` e `FLYWAY_PASS` e depois usar um valor padrão\ncaso não as encontre. Com isso, para apontar para outro ambiente basta sobrescrever\nessas variáveis na hora de executar os comandos, exemplo:\n\n```shell\nFLYWAY_DB=jdbc:mysql://prod:3306/adm_videos FLYWAY_USER=root FLYWAY_PASS=123h1hu ./gradlew flywayValidate\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodeedu%2Fmicro-admin-videos-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodeedu%2Fmicro-admin-videos-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodeedu%2Fmicro-admin-videos-java/lists"}