Skip to content

Commit

Permalink
feat(exceptions): Ajusts
Browse files Browse the repository at this point in the history
- Adjusts in exceptions
- Adjusts startup app
- Better README

Took 49 minutes
  • Loading branch information
gbzarelli committed May 24, 2019
1 parent 6aa14b9 commit 4284320
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 12 deletions.
47 changes: 40 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@

# Music Store API [![CircleCI](https://circleci.com/gh/gbzarelli/music-store-api.svg?style=svg)](https://circleci.com/gh/gbzarelli/music-store-api)

API para consultas e vendas de discos.
O `Music Store API` trata-se de uma API para consultas e vendas de discos,
sua base de dados é alimentada pela API do `Spotify` na inicialização do sistema,
cada disco tem um valor randômico entre 10 e 100 e está associado a uma das
quatro categorias pré definidas no sistema (POP, MPB, CLASSICA e ROCK),
na venda do disco será gerado um cashback de acordo com o dia da semana e o genêro de cada disco,
esses valores também estão pré definidos de acordo com as especificações do sistema.

## Especificações

Expand Down Expand Up @@ -31,18 +36,43 @@

## Executando com Docker em ambiente de desenvolvimento

Primeiramente entre na pasta do projeto, agora executaremos as seguintes
instruções:
Os seguintes passos foram documentados para serem executados em uma plataforna
Linux, porém os comandos com o sistema Windows podem ser semelhantes, mas,
o funcionamento não é totalmente garantido. Certifique-se que tenha instalado
em seu ambiente o `Java` (com o JAVA_HOME no classpath devidamente configurado)
e o `Maven`

- A instrução a seguir executará atravéz do [`Maven`](https://maven.apache.org) o `clean` do projeto, logo após o `package`, que executará os testes unitários para garantir a integridade do projeto e para gerar nosso `.jar`, por ultimo será realizado o build do [`Dockerfile`](./Dockerfile) gerando uma imagem no repositório local denominada de `beblue/music-store-api`. Para a realização do build foi utilizado o plugin [`dockerfile-maven-plugin`](https://github.com/spotify/docker-maven-plugin) configurado no [`pom.xml`](./pom.xml) do projeto.
- Efetue o clone do projeto:

```sh
```shell
$ git clone https://github.com/gbzarelli/music-store-api.git
```

- Acesse a pasta do projeto para iniciarmos a compilação e execução do sistema:

```shell
$ cd ./music-store-api
```

- A instrução a seguir executará atravéz do [`Maven`](https://maven.apache.org)
o `clean` do projeto, logo após o `package`, que executará os testes unitários
para garantir a integridade do projeto e para gerar nosso `.jar`, por ultimo
será realizado o build do [`Dockerfile`](./Dockerfile) gerando uma imagem
no repositório local denominada de `beblue/music-store-api`.
Para a realização do build foi utilizado o plugin
[`dockerfile-maven-plugin`](https://github.com/spotify/docker-maven-plugin)
configurado no [`pom.xml`](./pom.xml) do projeto.

```shell
$ mvn clean package dockerfile:build
```

- Após ter gerado a imagem da API atravéz do `dockerfile:build` iremos montar os containers pelo [`docker-compose`](./docker-compose.yml). O compose preparado irá deixar configurado uma container para o banco de dados e para o `music-store-api`:
- Após ter gerado a imagem da API atravéz do `dockerfile:build` iremos
montar os containers pelo [`docker-compose`](./docker-compose.yml).
O compose preparado deixará configurado uma container para o
banco de dados `MySQL` e para o `music-store-api`:

```sh
```shell
$ docker-compose up
```

Expand Down Expand Up @@ -102,4 +132,7 @@ $ docker-compose up

## Documentação dinâmica com o Swagger

A `Swagger` UI fornece uma estrutura de exibição que é capaz de interpretar
os endpoints do projeto e gera um site de documentação interativa

http://{address}:8080/swagger-ui.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

public class AlreadyImportedDiscsException extends ImportedException {
public AlreadyImportedDiscsException() {
super("Already imported discs");
super("Discs already imported");
}

@Override
public void printStackTrace() {
System.out.println("[INFO] "+getMessage());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public void importDiscsByGenres(ImportErrorCallback importErrorCallback) {
}

private boolean checkAlreadyImported(ImportErrorCallback importErrorCallback) {
// Poderia ser realizado uma consistencia mais adequada para verificar se os discos já foram importados.
if (discRepository.count() > 0) {
importErrorCallback.error(new AlreadyImportedDiscsException());
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public ApplicationStartup(SpotifyImportService spotifyService) {
public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) {
long time = System.currentTimeMillis();
spotifyService.importDiscsByGenres(ImportedException::printStackTrace);
System.out.println("Time to import: " + TimeUnit.MILLISECONDS.toSeconds((System.currentTimeMillis() - time)) + "seg");
System.out.println("Import time: " + TimeUnit.MILLISECONDS.toSeconds((System.currentTimeMillis() - time)) + "seg");
System.out.println("----Application started----");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ public Docket api() {
private ApiInfo getApiInfo() {
return new ApiInfo(name, description, version,
"Terms of Service",
new Contact("Beblue", "http://beblue.com.br", "contato@beblue.com.br"),
"APACHE-2.0",
"https://opensource.org/licenses/Apache-2.0",
new Contact("Guilherme Biff Zarelli", "http://helpdev.com.br", "gbzarelli@helpdev.com.br"),
"MIT",
"https://opensource.org/licenses/MIT",
Collections.emptyList());
}
}

0 comments on commit 4284320

Please sign in to comment.