Created
September 11, 2018 14:52
-
-
Save diegomengarda/7db81c32bd8981cb3291487b9a71f7ed to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import * as HTTP from '../http' | |
const defaultPage = 1 | |
const defaultPerPage = 20 | |
/** | |
* Função que processa a url para utilizar o padrão da API | |
* @param domain - Rota do Domain da API para realizar a requisição Ex.: clients | |
* @param route - Complemento de rota Ex.: clients/all | |
* @param id - Id do registro | |
* @param columns - Colunas do model que devem ser retornadas | |
* @param relations - Relacionamentos do model que devem ser retornados | |
* @param page - Página atual da paginação | |
* @param perPage - Número de registros que devem ser retornados por página | |
* @returns string | |
*/ | |
function _processUrl (domain, route, id, columns, relations, page, perPage) { | |
let url = domain | |
let hasUrlParams = false | |
if (id !== undefined && id !== null) { | |
url += '/' + id | |
} | |
url += (route ? '/' + route : '') | |
url += '?q=' | |
// Inclui os dados da paginação na URL caso os parâmetros sejam passados | |
if (page !== undefined && page !== null && page !== false) { | |
page = page || defaultPage | |
perPage = perPage || defaultPerPage | |
url += '&_page=' + page + '&_limit=' + perPage | |
hasUrlParams = true | |
} | |
// Inclui as colunas que devem retornar na requisição | |
if (columns !== null && columns !== undefined && columns.length > 0) { | |
columns.forEach(function (val) { | |
if (val.length > 0) { | |
url += '&_columns[]=' + val | |
} | |
}) | |
hasUrlParams = true | |
} | |
// Inclui os relacionamentos que devem retornar na requisição | |
if (relations !== null && relations !== undefined && relations.length > 0) { | |
relations.forEach(function (val) { | |
if (val.length > 0) { | |
url += '&_with[]=' + val | |
} | |
}) | |
hasUrlParams = true | |
} | |
if (!hasUrlParams) { | |
url = url.replace('?q=', '') | |
} | |
return url | |
} | |
/** | |
* Função que faz uma requisição GET na API | |
* @param domain - Rota do Domain da API para realizar a requisição Ex.: clients | |
* @param route - Complemento de rota Ex.: clients/all | |
* @param id - Id do registro | |
* @param columns - Colunas do model que devem ser retornadas | |
* @param relations - Relacionamentos do model que devem ser retornados | |
* @returns Promise | |
*/ | |
function _get (domain, route, id, columns, relations) { | |
return HTTP.get(_processUrl(domain, route, id, columns, relations)) | |
} | |
/** | |
* Função que faz uma requisição POST na API | |
* @param domain - Rota do Domain da API para realizar a requisição Ex.: clients | |
* @param route - Complemento de rota Ex.: clients/all | |
* @param id - Id do registro | |
* @param data - Dados do POST | |
* @returns Promise | |
*/ | |
function _post (domain, route, id, data) { | |
return HTTP.post(_processUrl(domain, route, id), data) | |
} | |
/** | |
* Função que faz uma requisição PUT na API | |
* @param domain - Rota do Domain da API para realizar a requisição Ex.: clients | |
* @param route - Complemento de rota Ex.: clients/all | |
* @param id - Id do registro | |
* @param data - Dados do POST | |
* @returns Promise | |
*/ | |
function _put (domain, route, id, data) { | |
return HTTP.put(_processUrl(domain, route, (id || data.id)), data) | |
} | |
/** | |
* Função que faz uma requisição POST/PUT na API | |
* Caso existe o id no objeto data, a requisição sera PUT, caso não, será POST | |
* @param domain - Rota do Domain da API para realizar a requisição Ex.: clients | |
* @param route - Complemento de rota Ex.: clients/all | |
* @param id - Id do registro | |
* @param data - Dados do POST | |
* @returns Promise | |
*/ | |
function _save (domain, route, id, data) { | |
if (data.id !== undefined && data.id !== null && data.id !== '' && data.id > 0) { | |
return _put(domain, route, id, data) | |
} | |
return _post(domain, route, id, data) | |
} | |
/** | |
* Função que faz uma requisição DELETE na API | |
* @param domain | |
* @param route | |
* @param id | |
* @returns Promise | |
*/ | |
function _destroy (domain, route, id) { | |
return HTTP.destroy(_processUrl(domain, route, id)) | |
} | |
/** | |
* Busca todos os registros do domain | |
* @param domain | |
* @param route | |
* @param id | |
* @param columns | |
* @param relations | |
* @param page | |
* @param perPage | |
* @returns Promise | |
*/ | |
function _all (domain, route, id, columns, relations, page, perPage) { | |
return HTTP.get(_processUrl(domain, route, id, columns, relations, page, perPage)) | |
} | |
/** | |
* Busca dinâmica de registros do domain | |
* @param domain | |
* @param route | |
* @param data | |
* @param columns | |
* @param relations | |
* @param page | |
* @param perPage | |
* @returns Promise | |
*/ | |
function _search (domain, route, data, columns, relations, page, perPage) { | |
if (data === undefined || data === null) { | |
data = null | |
} | |
page = page || defaultPage | |
perPage = perPage || defaultPerPage | |
return HTTP.post(_processUrl('search/' + domain, route, null, columns, relations, page, perPage), data) | |
} | |
export const get = _get | |
export const post = _post | |
export const put = _put | |
export const save = _save | |
export const destroy = _destroy | |
export const all = _all | |
export const search = _search |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment