Skip to content

tpaphysics/nestjs-urban-shaves-api

Repository files navigation

urban-shaves-logo

yarn NestJs jEST Prisma.io Docker Prisma Prisma

Descrição

O API Urban Shaves está sendo desenvolvida com framework Nestjs para integração entre os apps Urban Shaves web e Urban Shaves mobile. Possui fluxo de autenticação JWT, utilizamos como ORM o Prisma, para documentação o Swagger, o PostgresQl como banco de dados.

Instalação

# Instalação das dependências
$ yarn

# Iniciar container com postgres e migration
$ yarn up:db

# Para remover o container com o postgres
$ yarn rm:db

Iniciando o servidor

# development
$ yarn start

# watch mode
$ yarn start:dev

Observação

Para tornar uma rota pública basta adicionar o decorator @IsPublicRoute() como no exemplo abaixo:

@Controller('users')
export class UsersController {
  constructor(private readonly usersService: UsersService) {}

  @IsPublicRoute()
  @Post()
  createUser() {...}
}

Documentalçao com Swagger

http://localhost:3000/api/login
http://localhost:3000/api/users
http://localhost:3000/api/appointments
http://localhost:3000/api/providers

Prisma Studio

yarn prisma studio

Testes de integração

Utilizamos o jest para realizar testes de integração. Eles simulam melhor o ambiente real para testar os casos de uso. Para isso criamos o arquivo .env.test com um database test.

#url de teste
DATABASE_URL="postgresql://dbase:dbase@localhost:5432/test?schema=public"

Ao digitar o comando yarn up:db, ocoorem os sguintes passos:

  • Criação do container com o banco de dados postgres com docker-compose
  • Criação da tabela de desenvolvimento e execução migration de desenvolvimento.
  • Criação da tabela test com e execução da migration de teste

Para execução dos testes de integração:

yarn test:watch -- nome_do_arquivo_de_teste

Com isso os testes são realizados em um database de próprio de teste. O banco de teste é resetado no inicio do teste ao final de cada teste.

afterAll(async () => {
  const deleteAppointments = prisma.appointments.deleteMany();

  const deleteUsers = prisma.user.deleteMany();

  await prisma.$transaction([deleteAppointments, deleteUsers]);

  await prisma.$disconnect();
});

💥 Considerações

Existem muitas vantagens na utilização do Nestjs para criação de APIs pelo fato dele respeitar os principios do SOLID. Desta forma é mais facil ecalar o projeto e o trabalho em grupo pelo fato deste framework usar uma aquitetura padronizada.

👨‍🚀 Autor

Thiago Pacheco
Thiago Pacheco de Andrade

👋 Meus contatos!

Linkedin Badge Gmail Badge

Licença

Veja o arquivo MIT license.