This commit is contained in:
Luiz H. R. Silva 2024-06-11 08:39:43 -03:00
parent 1ae6fb6d51
commit 2c3f2b5a66
6 changed files with 113 additions and 58 deletions

View file

@ -1,21 +1,31 @@
export enum codigosResposta {
sucesso = 200,
erroConhecido = 400,
erroPermissao = 401,
erroDesconhecido = 500,
}
export type tipoRespostaSucesso<T> = {
cod: 200
cod: codigosResposta.sucesso
valor: T
mensagem: undefined
eErro: false
eCerto: true
detalhe?: undefined
detalhes?: string[]
}
export type tipoRespostaErro = {
//400 é um erro conhecido,
//500 é um erro desconhecido, geralmente tem origem de um exception
cod: 400 | 401 | 500
cod:
| codigosResposta.erroConhecido
| codigosResposta.erroDesconhecido
| codigosResposta.erroPermissao
valor: undefined
mensagem: string
eErro: true
eCerto: false
detalhe?: string[]
detalhes?: string[]
}
export type tipoResposta<T> = tipoRespostaSucesso<T> | tipoRespostaErro
@ -26,52 +36,59 @@ export const gerarRespostas = <T>(
/**
* Gera uma resposta de sucesso
*/
const valor = <T>(valor: T): tipoRespostaSucesso<T> => {
const valor = <T>(valor: T, detalhes?: string[]): tipoRespostaSucesso<T> => {
return {
cod: 200,
cod: codigosResposta.sucesso,
valor,
mensagem: undefined,
eErro: false,
eCerto: true,
detalhes,
}
}
/**
* Gera uma resposta de sucesso com valor true
*/
const valorTrue = (): tipoRespostaSucesso<true> => {
const valorTrue = (detalhes?: string[]): tipoRespostaSucesso<true> => {
return {
cod: 200,
cod: codigosResposta.sucesso,
valor: true,
mensagem: undefined,
eErro: false,
eCerto: true,
detalhes,
}
}
/**
* Gera uma resposta de erro conhecido
*/
const erro = (mensagem: string): tipoRespostaErro => {
const erro = (mensagem: string, detalhes?: string[]): tipoRespostaErro => {
return {
cod: 400,
cod: codigosResposta.erroConhecido,
valor: undefined,
mensagem,
eErro: true,
eCerto: false,
detalhes,
}
}
/**
* Gera uma resposta de erro de permissão,será necessário fazer o login novamente
*/
const erroPermissao = (mensagem?: string): tipoRespostaErro => {
const erroPermissao = (
mensagem?: string | undefined | null,
detalhes?: string[],
): tipoRespostaErro => {
return {
cod: 401,
cod: codigosResposta.erroPermissao,
valor: undefined,
mensagem: mensagem || "Sem permissão para esse recurso.",
eErro: true,
eCerto: false,
detalhes,
}
}
@ -84,7 +101,7 @@ export const gerarRespostas = <T>(
const mensagemFim = `${mensagem || "Erro interno"}`
return {
cod: 500,
cod: codigosResposta.erroDesconhecido,
valor: undefined,
mensagem: mensagemFim,
eErro: true,