{"id":18162662,"url":"https://github.com/yagolopesmartins/desafio_fullstack_vr_software_flutter_flask_python_api_mysql","last_synced_at":"2026-04-10T20:53:01.010Z","repository":{"id":260683386,"uuid":"880041533","full_name":"YagoLopesMartins/Desafio_FullStack_Vr_Software_Flutter_Flask_Python_API_MySQL","owner":"YagoLopesMartins","description":"API RESTful em Flask/Python para loja, produtos com MySQL","archived":false,"fork":false,"pushed_at":"2024-11-08T14:29:26.000Z","size":503,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T05:20:51.719Z","etag":null,"topics":["flask","flask-api","mysql-database","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","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/YagoLopesMartins.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-10-29T02:14:00.000Z","updated_at":"2024-11-08T14:29:30.000Z","dependencies_parsed_at":"2025-02-13T09:46:09.446Z","dependency_job_id":null,"html_url":"https://github.com/YagoLopesMartins/Desafio_FullStack_Vr_Software_Flutter_Flask_Python_API_MySQL","commit_stats":null,"previous_names":["yagolopesmartins/desafio_fullstack_vr_software_flutter_flask_python_api_mysql"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YagoLopesMartins%2FDesafio_FullStack_Vr_Software_Flutter_Flask_Python_API_MySQL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YagoLopesMartins%2FDesafio_FullStack_Vr_Software_Flutter_Flask_Python_API_MySQL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YagoLopesMartins%2FDesafio_FullStack_Vr_Software_Flutter_Flask_Python_API_MySQL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YagoLopesMartins%2FDesafio_FullStack_Vr_Software_Flutter_Flask_Python_API_MySQL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YagoLopesMartins","download_url":"https://codeload.github.com/YagoLopesMartins/Desafio_FullStack_Vr_Software_Flutter_Flask_Python_API_MySQL/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247595930,"owners_count":20964027,"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":["flask","flask-api","mysql-database","python3"],"created_at":"2024-11-02T10:04:51.673Z","updated_at":"2026-04-10T20:53:00.971Z","avatar_url":"https://github.com/YagoLopesMartins.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# API de Gestão de Produto e Loja\n\nEsta API fornece endpoints para gerenciar produtos, lojas e a relação entre eles, incluindo a configuração de preços de venda de produtos específicos em lojas. A API é implementada em Flask com SQLAlchemy e utiliza Flask-RESTful para simplificar a criação dos recursos.\n\n## Tecnologias Utilizadas\n- Python 3\n- Flask\n- Flask-RESTful\n- SQLAlchemy\n- Flask-SQLAlchemy (para integração do SQLAlchemy ao Flask)\n- Marshmallow (para serialização)\n- Banco de Dados: MySQL \n\n## Endpoints\n\n### Produtos\n- **`GET /produtos`**: Retorna uma lista de produtos, paginação e com suporte a filtros opcionais, incluindo `codigo`, `descricao`, `custo` e `precoVenda`.\n- **`GET /produtos/\u003cproduto_id\u003e`**: Retorna os detalhes de um produto específico.\n- **`POST /produtos`**: Cria um novo produto com os dados fornecidos.\n- **`PUT /produtos/\u003cproduto_id\u003e`**: Atualiza as informações de um produto específico.\n- **`DELETE /produtos/\u003cproduto_id\u003e`**: Exclui um produto específico.\n\n### Lojas\n- **`GET /lojas`**: Retorna uma lista de lojas com seus detalhes.\n- **`GET /lojas/\u003cloja_id\u003e`**: Retorna os detalhes de uma loja específica.\n- **`POST /lojas`**: Cria uma nova loja.\n- **`PUT /lojas/\u003cloja_id\u003e`**: Atualiza as informações de uma loja específica.\n- **`DELETE /lojas/\u003cloja_id\u003e`**: Exclui uma loja específica.\n\n### ProdutoLoja (Relacionamento Produto-Loja)\n- **`GET /produtoloja`**: Retorna a lista de associações entre produtos e lojas, incluindo informações de preço de venda.\n- **`POST /produtoloja`**: Cria uma nova associação de produto em loja com um preço de venda.\n- **`PUT /produtoloja/\u003cid_loja\u003e/\u003cid_produto\u003e`**: Atualiza o preço de venda de um produto específico em uma loja.\n- **`DELETE /produtoloja/\u003cid_loja\u003e/\u003cid_produto\u003e`**: Remove a associação de um produto em uma loja.\n\n## Regras de Validação\n- **Campos Obrigatórios**: Todos os campos obrigatórios devem ser preenchidos, caso contrário, será retornada uma mensagem de erro.\n- **Preço Único por Loja e Produto**: Não é permitido cadastrar mais de um preço de venda para o mesmo produto em uma loja. Caso um registro duplicado seja tentado, um erro será retornado.\n- **Formato de Preço**: O preço de venda deve estar no formato decimal `(13,3)`, aceitando até 3 casas decimais.\n\n## Exemplo de Uso no Postman\n\n### Exemplo de Requisição POST para Criar um Produto\n```json\nPOST /produtos\n{\n  \"descricao\": \"Produto Exemplo\",\n  \"custo\": 100.50,\n  \"imagem\": \"url_da_imagem\"\n}\n```\n\n## Configuração do Projeto\n### Instalação e Configuração de Dependências\n\n- Clone o repositório.\n- Instale as dependências (pip install -r requirements.txt)\n- Defina as variáveis para no .env\n- Crie seu banco de dados ou utilize o que está disponível no diretório utils\n- Execute o arquivo da raiz: python app.py\n\n  ```\n  flask db upgrade\n  flask run\n  ```\n- Acesse a API no navegador ou no Postman: http://localhost:5000\n\n### Estrutura do Projeto\n\n```\n.\n├── factories/           # Fabrica de dados baseado nos modelos (popula banco de dados)\n├── models/              # Modelos SQLAlchemy para Produto, Loja e ProdutoLoja\n├── resources/           # Recursos Flask-RESTful para endpoints\n├── tests/               # Testes unitários das principais funcionalidades\n├── utils/               # Contem endpoints do Postman apra testes de API e o banco de dados\n├── .env                 # Arquivo com variaveis de ambientes\n├── app.py               # Arquivo principal da aplicação\n├── config.py            # Arquivo de conexão com banco de dados\n└── README.md            # Documentação da API\n├── requirements.txt     # Lista de bibliotecas e tecnologias utilizadas\n```\n\n#### Para dúvidas ou contribuições, fique à vontade para abrir uma issue ou pull request ou entrar em contato no e-mail: yagolopesmartins777@gmail.com\n\n#### Para mais informações entrar em contato no e-mail: yagolopesmartins777@gmail.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyagolopesmartins%2Fdesafio_fullstack_vr_software_flutter_flask_python_api_mysql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyagolopesmartins%2Fdesafio_fullstack_vr_software_flutter_flask_python_api_mysql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyagolopesmartins%2Fdesafio_fullstack_vr_software_flutter_flask_python_api_mysql/lists"}