Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/lsmcodes/nlw-journey-trilha-java

Planner de viagens desenvolvido durante o evento NLW Journey oferecido pela Rocketseat.
https://github.com/lsmcodes/nlw-journey-trilha-java

java nlw-journey-java rocketseat rocketseat-nlw spring-boot

Last synced: 16 days ago
JSON representation

Planner de viagens desenvolvido durante o evento NLW Journey oferecido pela Rocketseat.

Awesome Lists containing this project

README

        

# NLW Journey - Planner de Viagens


















## Visão Geral

Este repositório contém uma API REST Java de planejamento de viagens, desenvolvida durante o evento `NLW Journey` oferecido pela `Rocketseat`. As três aulas ministradas durante o evento cobriram os seguintes assuntos:

* Banco em memória H2;
* JPA;
* Migrations com FlyWay;
* Uso de records para transferência de dados;
* Lombok.

## Desafios

Ao final da terceira aula da trilha Java, os desafios a seguir foram propostos:

* Validar os campos de data durante a criação de uma viagem para que a data de início de uma viagem não seja inferior à data de término;
* Validar o campo de data durante a criação de uma atividade para garantir que a data de realização de uma viagem seja durante o período da viagem a qual ela pertence;
* Adição de mapeamento e tratamento de exceções personalizadas.

## **Endpoints**

### Trips

| URI | Método | Ação | Body |
| ------------------------ | ------- | ------------------------ | --------------------------- |
| /trips | POST | Criar uma viagem | [JSON](#criaratualizar-viagem) |
| /trips/{id} | GET | Buscar uma viagem | N/A |
| /trips/{id} | PUT | Atualizar uma viagem | [JSON](#criaratualizar-viagem) |
| /trips/{id}/confirm | POST | Confirmar uma viagem | N/A |
| /trips/{id}/invite | POST | Convidar um participante | [JSON](#convidar-participante) |
| /trips/{id}/participants | GET | Buscar participantes | N/A |
| /trips/{id}/activities | POST | Adicionar uma atividade | [JSON](#criar-atividade) |
| /trips/{id}/activities | GET | Buscar atividades | N/A |
| /trips/{id}/links | POST | Adicionar um link | [JSON](#criar-link) |
| /trips/{id}/links | GET | Buscar links | N/A |

### Participants

| URI | Método | Ação | Body |
| -------------------------- | ------- | ------------------------- | ---- |
| /participants/{id}/confirm | POST | Confirmar um participante | N/A |

## Body

A seguir estão os modelos que devem ser utilizados para cada uma das requisições que os exigirem:

### Criar/Atualizar Viagem

```json
{
"destination":"São Paulo, SP",
"startsAt":"2024-06-25T06:00:00.000",
"endsAt":"2024-06-30T21:00:00.000",
"emailsToInvite": [
"[email protected]"
],
"ownerName":"Criador da viagem",
"ownerEmail":"[email protected]"
}
```

### Convidar Participante

```json
{
"email":"[email protected]"
}
```

### Confirmar Participante

```json
{
"name":"Participante"
}
```

### Criar Atividade

```json
{
"title":"Ir ao Parque Ibirapuera",
"occursAt":"2024-06-27T09:00:00.000"
}
```

### Criar Link

```json
{
"title":"O que fazer: São Paulo",
"url":"https://www.tripadvisor.com.br/Attractions-g303631-Activities-Sao_Paulo_State_of_Sao_Paulo.html"
}
```