Skip to content

Instantly share code, notes, and snippets.

View VitorLuizC's full-sized avatar

Vitor L Cavalcanti VitorLuizC

View GitHub Profile
@VitorLuizC
VitorLuizC / request.js
Created March 2, 2018 19:59
Módulo que executa as requisições de queries GraphQL com suas variáveis.
/**
* Obtém os cabeçalhos da requisição.
* @returns {Object.<string, string>}
*/
export const getHeaders = () => {
const token = localStorage.getItem('access_token');
const headers = {
'Content-Type': 'application/json',
...token && { 'Authorization': `Bearer ${token}` }
};
const BLOCK = /\{[\w|\_|\s|\:|\!|\(|\)|\$]*\}/
/**
* Get GraphQL block.
* @param {string} [source]
* @returns {string}
*/
const getBlocks = (source = '') => {
const { '0': block, index } = BLOCK.exec(source) || {}
if (!block)
@VitorLuizC
VitorLuizC / SearchUsers.graphql
Last active August 29, 2018 02:44
Query GraphQL de pesquisa de usuários.
query SearchUsers ($term: String!, $type: SearchUsersType!) {
users: searchUsers (term: $term, type: $type) {
id
name
email
position
}
}
@VitorLuizC
VitorLuizC / GetSearchUsersTypes.graphql
Last active August 29, 2018 02:39
Query para obter os dados do enum "SearchUserTypes".
query GetSearchUsersTypes {
enum: __type (name: "SearchUsersTypes") {
values: enumValues {
value: name
label: description
}
}
}
@VitorLuizC
VitorLuizC / SearchUsersForm.vue
Last active March 4, 2018 21:38
Componente de formulário de pesquisa de usuários.
<template>
<v-form>
<v-text-field v-model="term" label="Pesquisar usuário" />
<v-select v-model="type" :items="types" label="Pesquisar por" />
<v-btn @click="submit()">Pesquisar</v-btn>
</v-form>
</template>
<script>
export default {
<template>
<section>
<search-users-form :types="types" @search="search($event)" />
<v-data-table
:items="users"
:headers="[
{ text: 'ID', value: 'id' },
{ text: 'Nome', value: 'name' },
{ text: 'E-Mail', value: 'email' },
{ text: 'Cargo', value: 'position' }
@VitorLuizC
VitorLuizC / index.js
Last active August 29, 2018 02:43
Módulo que controla a pesquisa de usuários.
import request from './request';
import SearchUsers from './SearchUsers.graphql';
import GetSearchUsersTypes from './GetSearchUsersTypes.graphql';
/**
* Obtém os tipos de pesquisa a partir do enum "SearchUserTypes".
* @returns {Promise.<{ value: string, label: string }[]>}
*/
export const getTypes = async () => {
const response = await request(GetSearchUsersTypes);
import reconstruct from 'reconstruct'
// const isValidDescription = (value) => {
// // TODO: Não pode repetir.
// // TODO: Não pode ter valores diferentes de string.
// // Can't correspond 1 to N properties.
// // Ex. { 'name': 'user.name', 'fullName': 'user.name' }
// }
const inverse = (value, property) => ({ [value]: property })

Avaliar possíveis dependências

  • lodash.get é uma função do Lodash para obter o valor de um objeto a partir de um path.

  • lodash.set é uma função do Lodash para definir um valor para um objeto a partir de um path.

  • object-path faz o mesmo que as funções do Lodash, mas num único módulo.

  • objectpath compila um object path para um array.