Enegrecer / enegrecer-web

Verdade Seja Dita!
https://enegrecer-e37b3.firebaseapp.com/
MIT License
119 stars 55 forks source link

Melhorar estrutura do objeto denuncia ao cadastrar uma nova denúncia. #273

Open nayara opened 6 years ago

nayara commented 6 years ago

Hoje em dia estamos registrando 'Denúncia' em um nó separado das demais características da denúncia no banco de dados. Para melhorar a performance e o design do código seria melhor que todas as informações da denúncia estivesse no mesmo nó que a denúncia.

Essa situação de separação de nós pode ocasionar problemas de performance, pois pra cada denúncia que consultamos temos que realizar outro request ao firebase para recuperar as pessoas envolvidas na respectiva denúncia. Além disso é preciso construir o objeto denúncia com base em todas as pessoas envolvidas retornadas pelo firebase

Atualmente a estrutura está assim: Objeto denúncia:

const dados = {
  bairroAgressao: '',
  cidadeAgressao: '',
  dataAgressao: '',
  descricaoAgressao: '',
  enderecoAgressao: '',
  estadoAgressao: '',
  periodoAgressao: '',
  categoriaCrime: '',
  numeroBoletim: '',
  numeroProcesso: '',
  orgao: '',
  cidadeDenunciante: '',
  dataNascimentoDenunciante: '',
  emailDenunciante: '',
  generoDenunciante: '',
  nomeDenunciante: '',
  racaDenunciante: '',
  telefoneDenunciante: '',
  cidadeVitima: '',
  dataNascimentoVitima: '',
  generoVitima: '',
  nomeVitima: '',
  racaVitima: '',
  souAVitima: '',
  telefoneVitima: '',
  dataNascimentoAgressor: '',
  nomeAgressor: '',
  racaAgressor: '',
  generoAgressor: '',
  bairroAgressor: '',
  cidadeAgressor: '',
  descricaoAgressor: '',
  estadoAgressor: ''
}

Para cada nó de denúncias, criamos um um novo nó de pessoasEnvolvidas, dessa forma:

denunciante: {
      cidade: dados.cidadeDenunciante,
      dataNascimento: dados.dataNascimentoDenunciante,
      email: dados.emailDenunciante,
      genero: dados.generoDenunciante,
      nome: dados.nomeDenunciante,
      raca: dados.racaDenunciante,
      telefone: dados.telefoneDenunciante
    },
    vitima: {
      cidade: dados.cidadeVitima,
      dataNascimento: dados.dataNascimentoVitima,
      genero: dados.generoVitima,
      nome: dados.nomeVitima,
      raca: dados.racaVitima,
      souAVitima: dados.souAVitima,
      telefone: dados.telefoneVitima
    },
    agressor: {
      nome: dados.nomeAgressor,
      raca: dados.racaAgressor,
      dataNascimento: dados.dataNascimentoAgressor,
      genero: dados.generoAgressor,
      descricao: dados.descricaoAgressor,
      cidade: dados.cidadeAgressor,
      estado: dados.estadoAgressor,
      bairro: dados.bairroAgressor
    }

A ideia é que possamos transformar para uma outra estrutura, mais facilmente recuperável do banco:

{
  "bairroAgressao": "",
  "cidadeAgressao": "",
  "dataAgressao": "",
  "descricaoAgressao": "",
  "enderecoAgressao": "",
  "estadoAgressao": "",
  "periodoAgressao": "",
  "categoriaCrime": "",
  "numeroBoletim": "",
  "numeroProcesso": "",
  "orgao": "",
  "denunciante": {
    "nome": "",
    "dataNascimento": "",
    "cidade": "",
    "genero": "",
    "raca": "",
    "email": "",
    "telefone": "",
  },
  "vitima": {
    "nome": "",
    "dataNascimento": "",
    "cidade": "",
    "genero": "",
    "raca": "",
    "souAVitima": "",
    "email": "",
    "telefone": "",
  },
  "agressor": {
    "nome": "",
    "dataNascimento": "",
    "cidade": "",
    "estado": "",
    "bairro": "",
    "genero": "",
    "raca": "",
    "souAVitima": "",
    "email": "",
    "telefone": "",
    "descricao": ""
  }
}

Creio que manter as estruturas em nós distintos não tem nos trazido benefícios até o momento.

srmeneses commented 4 years ago

De fato a estrutura de dados fica mais intuitiva e melhor categorizável. O que vocês acham de retirar o label de Agressão das chaves e colocá-los dentro de um objeto chamado "agressao"? Assim todas os dados serão acessados com a mesma padronização.

{
  "agressao": {
    "bairro": "",
    "cidade": "",
    "data": "",
    "descricao": "",
    "endereco": "",
    "estado": "",
    "periodo": "",
    "categoriaCrime": "",
    "numeroBoletim": "",
    "numeroProcesso": "",
    "orgao": ""
  },
  "denunciante": {
    "nome": "",
    "dataNascimento": "",
    "cidade": "",
    "genero": "",
    "raca": "",
    "email": "",
    "telefone": "",
  },
  "vitima": {
    "nome": "",
    "dataNascimento": "",
    "cidade": "",
    "genero": "",
    "raca": "",
    "souAVitima": "",
    "email": "",
    "telefone": "",
  },
  "agressor": {
    "nome": "",
    "dataNascimento": "",
    "cidade": "",
    "estado": "",
    "bairro": "",
    "genero": "",
    "raca": "",
    "souAVitima": "",
    "email": "",
    "telefone": "",
    "descricao": ""
  }
}