Skip to content

Commit 36b3a8a

Browse files
authored
docs: update README with instructions
1 parent 5788531 commit 36b3a8a

File tree

1 file changed

+84
-10
lines changed

1 file changed

+84
-10
lines changed

README.md

Lines changed: 84 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,105 @@
11
# Boilerplate GraphQL Apollo with Factory Method
22

3-
## Project setup
3+
Boilerplate para futuros projetos usando GraphQL Apollo em Vue.js.
44

5+
Esta arquitetura foi baseada no artigo [Vue API calls in a smart way](https://medium.com/canariasjs/vue-api-calls-in-a-smart-way-8d521812c322) que propõe o uso do padrão de projeto Factory Method para chamadas API, a fim de esconder detalhes de implementação e expor apenas a interface pública para as chamadas. No artigo, é proposto o uso da biblioteca axios, mas para fins de estudos, implementei o uso de [GraphQL](https://graphql.org/).
6+
7+
Por meio de Injeção de Depedências, o Apollo Provider é passado para os repositories que fazem a manipulação direta das queries e mutations. Assim, garantindo que seja possível usar diferentes APIs para consumo, sendo necessário apenas a extração do client desejado.
8+
9+
```js
10+
export default function({ defaultClient: apollo }) {
11+
return {
12+
get({ variables }) {
13+
return apollo.query({
14+
query: getGraphFile(GRAPH_QUERIES_PATH, "getCharacters"),
15+
variables
16+
});
17+
},
18+
19+
...
520
```
6-
yarn install
21+
22+
Chame o repositório que deseja usar através da Factory:
23+
```js
24+
import { repositoryFactory } from "@/repository/repositoryFactory.js";
25+
const charactersRepository = repositoryFactory.get("characters");
26+
```
27+
28+
E faça uma consulta:
29+
```js
30+
const character = await charactersRepository.getCharacter({
31+
variables: {
32+
charId: 2
33+
}
34+
});
735
```
836
9-
### Compiles and hot-reloads for development
37+
## Arquitetura
1038
1139
```
12-
yarn run serve
40+
src
41+
App.vue
42+
main.js
43+
44+
└─── graphql
45+
│ └─── queries
46+
| | | getCharacters.gql
47+
│ │ | getCharacter.gql
48+
│ │ | getEpisodes.gql
49+
│ │ | getEpisode.gql
50+
| |
51+
│ └─── mutations
52+
│ │ ...
53+
54+
└─── repository
55+
| | index.js
56+
| | repositoryFactory.js
57+
| └─── repositories
58+
| | charactersRespository.js
59+
| | episodesRespository.js
60+
|
61+
└─── utils
62+
| | graphql.js
1363
```
1464
15-
### Compiles and minifies for production
65+
## Tecnologias
66+
* vue-apollo
67+
* graphql-tag
68+
69+
## Como baixar
70+
71+
É necessário ter no mínimo a versão 8 do [NodeJS](https://nodejs.org/en/download) instalado e consequentemente o NPM (que vem junto com o Node quando instalado). Neste projeto, optei pelo [Yarn](https://yarnpkg.com), mas fique a vontade para usar o que lhe for conveniente.
72+
73+
Clone este repositório (caso queira clonar por linha de comando necessitará do [git](https://git-scm.com) instalado)
1674
1775
```
18-
yarn run build
76+
git clone https://github.com/exploitmik/vue-boilerplate-graphql.git
77+
```
78+
79+
Depois vá até a pasta clonada, por exemplo:
80+
81+
```
82+
cd vue-boilerplate-graphql/
83+
```
84+
85+
## Como rodar
86+
87+
Dentro da pasta, os seguintes comandos estarão disponíveis:
88+
89+
### Instalar todas as dependências para o projeto funcionar
90+
91+
```
92+
yarn install
1993
```
2094
21-
### Run your tests
95+
### Compilar e executar um servidor de desenvolvimento com hot-reloading
2296
2397
```
24-
yarn run test
98+
yarn run serve
2599
```
26100
27-
### Lints and fixes files
101+
### Compilar e minificar para produção
28102
29103
```
30-
yarn run lint
104+
yarn run build
31105
```

0 commit comments

Comments
 (0)