An open API service indexing awesome lists of open source software.

https://github.com/hmontarroyos/api_contability


https://github.com/hmontarroyos/api_contability

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

        

[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![LinkedIn][linkedin-shield]][linkedin-url]


API Contability   |   
Tecnologias Utilizadas   |   
Como Instalar o Projeto   |   
Como usar   |   
Deploy da aplicação


## API Contability



api_contability






Essa API foi desenvolvida em NodeJS em conjunto com outra API que eu desenvolvi em Python cujo link
se encontra aqui, onde ela envia
uma planilha de custos de clientes no formato XLSX, e a API em Python lhe devolve um JSON dessa planilha que bate com as propriedades esperadas pelo modelo, após isso ela salva no banco de dados que é o PostgreSQL. Facilitando o gerenciamento e a visualização futura, também criei um endpoint que é possível deletar do banco alguma planilha caso seja necessário e também listar todos os dados salvos no banco.




(de volta ao topo)

### Tecnologias Utilizadas


[![NodeJS][NodeJS]][NodeJS-url]
[![Typescript][Typescript]][Typescript-url]
[![PostgreSql][PostgreSql]][PostgreSql-url]
[![Sequelize][Sequelize]][Sequelize-url]
[![Express][Express]][Express-url]
[![Cors][Cors]][Cors-url]
[![Body_Parser][Body_Parser]][Body_Parser-url]
[![uuid][uuid]][uuid-url]
[![Dotenv][Dotenv]][Dotenv-url]
[![Nodemon][Nodemon]][Nodemon-url]
[![Multer][Multer]][Multer-url]
[![Jest][Jest]][Jest-url]
[![Docker][Docker]][Docker-url]


### Utilitários

[![Postman][Postman]][Postman-url]


(de volta ao topo)

### Como Instalar o Projeto


```sh
npm install
```

Você também vai precisar de um arquivo .env na raiz do seu projeto com as seguintes informações

```sh
POSTGRES_DATABASE = ''
POSTGRES_USERNAME=''
POSTGRES_PASSWORD=''
POSTGRES_HOST=localhost
PORT= 4002
URL_CONVERT_SPREADSHEET=''
```

Substituindo pelas informações suas como o nome do seu Database, Username e Password, o Host, Port, e Url Convert SpreadSheet você pode deixar ou alterar da maneira que desejar.

Você também vai precisar ter o banco PostgreSQL, instalado na sua maquina rodando na porta dele, para isso você pode baixar ele para o seu ambiente de desenvolvimento através desse Link

Após baixar todas as Dependências do Projeto dentro da pasta Raiz, inicie o Servidor com o Comando:

```sh
npm start
```

### Como usar


Feito todo os passos acima o seu servidor por default vai estar na rodando na porta que você definiu na sua variavel PORT no seu .env .

#### Endpoints

Para Fazer as chamadas dos endpoints da API seria necessario ter algum cliente servidor no meu caso eu usei o Postman mas qualquer um já serviria.

Estou usando a porta 4002 pois foi ela que defini no meu arquivo .env e caso não passe outra ela está como default, você pode usar ela ou outra que definiu só não esqueça de alterar na chamada.





Caso não tenha definido uma porta na sua variavel de ambiente PORT ele vai rodar
na porta 4002 por default.



### GET

http://localhost:4002/contability/transactions/



Essa rota irá listar as planilhas salvas no nosso banco de Dados se você já tiver salvo algo vai te devolver um JSON com os dados ou um Array vazio caso o banco esteja limpo.

### POST

http://localhost:4002/contability/import



Essa rota é onde você vai enviar seu arquivo .xlsx para a API de conversão em Python, e caso esteja tudo ok, ela vai lhe devolver um JSON, e com isso vai salvar no banco, caso de sucesso ele vai te devolver essa mensagem Transactions imported successfully.

Mas para isso será necessario você enviar um arquivo valido e com os requisitos da API, com as propriedades da tabela a mesma do modelo, caso contrario a API vai te alertar informando algo no body o status code do error e a message dele.



A API desenvolvida no FastAPI em Python espera os mesmos dados no modelo.




Para testar eu deixei um arquivo .xlsx na pasta uploads na raiz do projeto onde você caso esteja usando o Postman por exemplo pode ir na opção Body e no key escrever file por exemplo e escolher do tipo file e no Value você seleciona o arquivo TESTE_PLANILHA.xlsx da pasta uploads e envia.

### DELETE

http://localhost:4002/contability/transactions/:id



Essa rota irá deletar uma planilha especifica definida pelo seu id no final do /:id é so substituir pelo id em questão e ao submeter ele será deletado do banco, caso não exista o id ou já estiver sido deletado ele vai lhe alertar com uma mensagem no body, caso exista ele será deletado e você verá a mensagem informando que foi deletado junto a um status code 200

#### Testes

Caso queira rodar os testes para vê se está tudo correto pode executar o seguinte comando

```sh
npm test
```
que o Jest vai executar os tests que foram criados para ele.


### Dockerizar

Parar criar o container da aplicação esubir posteriomente em um Docker hub por exemplo ou usar localmente é so rodar o seguinte comando para criar a imagem da nossa API

```docker
docker build -t NOME_DA_IMAGEM

```
após ter criado ela e também ter dockerizado a API nossa em Python, está no hora de subir nosso compose para ele conectar nossos container de API e do nosso banco Postgree, para isso você rodará o comando:

```docker
docker compose up

```

### 🚀 Let's code! 🚀

[contributors-shield]: https://img.shields.io/github/contributors/HMontarroyos/api_contability.svg?style=for-the-badge
[contributors-url]: https://github.com/HMontarroyos/api_contability/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/HMontarroyos/api_contability.svg?style=for-the-badge
[forks-url]: https://github.com/HMontarroyos/api_contability/fork
[stars-shield]: https://img.shields.io/github/stars/HMontarroyos/api_contability.svg?style=for-the-badge
[stars-url]: https://github.com/HMontarroyos/api_contability/stargazers
[issues-shield]: https://img.shields.io/github/issues/HMontarroyos/api_contability.svg?style=for-the-badge
[issues-url]: https://github.com/HMontarroyos/api_contability/issues
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
[linkedin-url]: https://www.linkedin.com/in/hebertmontarroyos-developer/

[NodeJS]: https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge&logo=node.js&logoColor=white
[NodeJS-url]: https://nodejs.org/en
[Typescript]: https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white
[Typescript-url]: https://www.typescriptlang.org/
[PostgreSql]: https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge&logo=postgresql&logoColor=white
[PostgreSql-url]: https://www.postgresql.org/
[Sequelize]: https://img.shields.io/badge/Sequelize-52B0E7?style=for-the-badge&logo=Sequelize&logoColor=white
[Sequelize-url]: https://sequelize.org/
[Express]: https://img.shields.io/badge/express.js-%23404d59.svg?style=for-the-badge&logo=express&logoColor=%2361DAFB
[Express-url]: https://expressjs.com/
[Cors]: https://img.shields.io/badge/cors-1C1E24?style=for-the-badge
[Cors-url]: https://www.npmjs.com/package/cors
[Body_Parser]: https://img.shields.io/badge/Body%20Parser-%23CF4647.svg?style=for-the-badge
[Body_Parser-url]: https://www.npmjs.com/package/body-parser
[uuid]: https://img.shields.io/badge/uuid-black?style=for-the-badge
[uuid-url]: https://www.npmjs.com/package/uuid
[Dotenv]: https://img.shields.io/badge/Dotenv-FF6600?style=for-the-badge
[Dotenv-url]: https://www.npmjs.com/package/dotenv
[Nodemon]: https://img.shields.io/badge/NODEMON-%23323330.svg?style=for-the-badge&logo=nodemon&logoColor=%BBDEAD
[Nodemon-url]: https://www.npmjs.com/package/nodemon
[Multer]: https://img.shields.io/badge/Multer-black?style=for-the-badge
[Multer-url]: https://www.npmjs.com/package/multer
[Jest]: https://img.shields.io/badge/-jest-%23C21325?style=for-the-badge&logo=jest&logoColor=white
[Jest-url]: https://jestjs.io/pt-BR/
[Docker]: https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white
[Docker-url]: https://www.docker.com/
[Postman]: https://img.shields.io/badge/Postman-gray?style=for-the-badge&logo=postman
[Postman-url]: https://www.postman.com/