- Tecnologias utilizadas
- Instalação
- Rotas
- Typescript
- NodeJS
- PostgreSQL
- TypeORM
- Express
- CORS
- Multer
- Express Async Errors
- date-fns
- bcryptjs
- crypto
Você precisa ter instalado em sua máquina as seguintes ferramentas:
# Clone este repositório
$ git clone <https://github.com/mirandajunior10/GoBarber-backend>
# Instale as dependências
$ npm install
ou
$ yarn install
#Criando o container no docker
docker run --name postgres -e POSTGRES_PASSWORD=docker -d postgres
#Você pode alterar o name e POSTGRES_PASSWORD, mas lembre de alterar os campos username e password em ormconfig.json, na pasta raíz
#Após criar o banco postgres, você deve criar um database com o nome gostack_gobarber. Você também pode alterar o nome do database, mas lembre
#de alterar o campo database dele em ormconfig.json. Eu utilizo o dbeaver para criar o database, mas você pode utilizar o de sua preferência.
# Criar o banco de dados
$ npm run typeorm migration:run
ou
$ yarn typeorm migration:run
# Executar o servidor
$ npm run dev:server
ou
$ yarn dev:server
# O servidor inciará na porta:3000 - acesse <http://localhost:3000>
🚨 É imprescindível ter executado os passos anteriores e estar com o servidor executando 🚨
Este método recebe o nome, email e senha do usuário para criação...
{
"name": "João",
"email": "Joã[email protected]",
"password": "123456"
}
Campo | Tipo |
---|---|
name | String |
String | |
password | String |
...cria o usuário no banco de dados e retorna seus dados.
{
"name": "Jorlan Miranda",
"email": "[email protected]",
"id": "16c511c8-bb6e-4d7c-b12c-8c2e22d18ff5",
"created_at": "2020-09-03T05:40:18.921Z",
"updated_at": "2020-09-03T05:40:18.921Z"
}
Campo | Tipo |
---|---|
id | uuid |
name | String |
String | |
created_at | Date |
updated_at | Date |
Este método recebe o email e senha do usuário para autenticação...
{
"email": "Joã[email protected]",
"password": "123456"
}
Campo | Tipo |
---|---|
String | |
password | String |
...cria a sessão autenticada por JWT e retorna seus dados.
{
"user": {
"id": "16c511c8-bb6e-4d7c-b12c-8c2e22d18ff5",
"name": "Jorlan Miranda",
"email": "[email protected]",
"avatar": "d1c2af27975d3bba8066-photo-1542838132-92c53300491e.jfif",
"created_at": "2020-09-03T05:40:18.921Z",
"updated_at": "2020-09-04T04:10:28.439Z"
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1OTk1MDQ1NjIsImV4cCI6MTU5OTU5MDk2Miwic3ViIjoiMTZjNTExYzgtYmI2ZS00ZDdjLWIxMmMtOGMyZTIyZDE4ZmY1In0.wD2vATBGITYSSGDsNex9nWZpbCX4bzIXPww9GEFI_Ak"
}
- Session
Campo | Tipo |
---|---|
user | User |
token | string |
- User
Campo | Tipo |
---|---|
id | uuid |
name | String |
String | |
avatar | String |
created_at | Date |
updated_at | Date |
O campo token deve ser utilizado nas rotas abaixo, ou elas retornarão erro de autenticação. O token tem duração de um dia.
Este método recebe o arquivo da foto, altera o avatar do usuário no banco de dados...
{
"id": "16c511c8-bb6e-4d7c-b12c-8c2e22d18ff5",
"name": "Jorlan Miranda",
"email": "[email protected]",
"avatar": "5854bfe3743d06e3cbf9-photo-1542838132-92c53300491e.jfif",
"created_at": "2020-09-03T05:40:18.921Z",
"updated_at": "2020-09-07T22:04:50.391Z"
}
Campo | Tipo |
---|---|
id | uuid |
name | String |
String | |
avatar | String |
created_at | Date |
updated_at | Date |
Este método recebe um id do provedor de serviço (apenas outro usuário, qualquer usuário pode ser um prestador de serviço), um data para agendamento...
{
"provider_id": "53879588-75b0-4d27-85c2-ced7b3931168",
"date": "{% now 'iso-8601', '' %}"
}
Campo | Tipo |
---|---|
provider_id | uuid |
name | Date |
...E retorna dados do agendamento
{
"provider_id": "16c511c8-bb6e-4d7c-b12c-8c2e22d18ff5",
"date": "2020-09-07T19:00:00.000Z",
"id": "53f2adda-258f-4cde-aed7-d787cc50a774",
"created_at": "2020-09-07T22:09:53.856Z",
"updated_at": "2020-09-07T22:09:53.856Z"
}
Campo | Tipo |
---|---|
provider_id | uuid |
date | Date |
id | uuid |
created_at | Date |
updated_at | Date |
Este método retorna os agendamentos do usuário autenticado
[
{
"id": "53f2adda-258f-4cde-aed7-d787cc50a774",
"provider_id": "16c511c8-bb6e-4d7c-b12c-8c2e22d18ff5",
"date": "2020-09-07T19:00:00.000Z",
"created_at": "2020-09-07T22:09:53.856Z",
"updated_at": "2020-09-07T22:09:53.856Z"
}
]
Campo | Tipo |
---|---|
provider_id | uuid |
date | Date |
id | uuid |
created_at | Date |
updated_at | Date |
Projeto GoBaber em desenvolvimento pela Gostack 14 da Rocketseat, ministrado por Diego Fernandes.