Nocs-lab / inbcm-backend

1 stars 0 forks source link

⚠️[Crítico] Refactor: Implemetar Validators aos schemas do mongo #33

Closed Everbero closed 2 months ago

Everbero commented 3 months ago

Os modelos de dados utilizados não possuem validação, por exemplo os campos não estão marcados como obrigatórios, não indicam tamanho mínimo e máximo entre outras validações, veja o exemplo abaixo de como validações podem ser implementadas no modelo Museológico em https://github.com/Nocs-lab/inbcm-backend/blob/development/models/Museologico.ts

const MuseologicoSchema = new mongoose.Schema({
  numeroRegistro: { 
    type: String, 
    alias: "numeroDeRegistro",
    required: [true, 'O número de registro é obrigatório'],
    unique: true, // Assegura que cada número de registro seja único
    trim: true // Remove espaços em branco no início e no final
  },
  outrosNumeros: { type: String },
  situacao: { 
    type: String,
    enum: ['ativo', 'inativo', 'em restauro'], // Define valores permitidos
    required: [true, 'A situação é obrigatória']
  },
  denominacao: { type: String, required: [true, 'A denominação é obrigatória'] },
  autor: { type: String },
  classificacao: { type: String },
  resumoDescritivo: { type: String, maxlength: 500 }, // Limita o comprimento do resumo
  dimensoes: { type: String },
  materialTecnica: { type: String },
  estadoConservacao: { type: String, alias: "estadoDeConservacao" },
  localProducao: { type: String, alias: "localDeProducao" },
  dataProducao: { type: String, alias: "dataDeProducao" }
});

As validações são utilizadas para impedir que documentos fora dos padrões sejam salvos durante o processamento, além das validações deve ser implementado o tratamento de erros de forma que seja fácil identificar quando e porque um documento não foi gravado. Para mais informações visite: https://mongoosejs.com/docs/validation.html e https://www.mongodb.com/docs/manual/core/schema-validation/

Everbero commented 3 months ago

@vadolasi @Rickson-Rocha, podem dar algum feedback nesta tarefa?

vadolasi commented 2 months ago

Os requerimentos quanto aos dados contidos nas planilhas são bastante flexiveis. Mesmo campos ditos obrigatórios não precisam ser preenchidos, também nenhum dos campos possui de fato algum padrão que precise ser validado, como enum ou tamanho minimo ou máximo, ou necessidade de ser único. O trim já é feito dirante o parse do arquivo. Com base nos requerimentos atuais, não vejo necessidade dessas validações dentro do schema.

Everbero commented 2 months ago

@fabioprocopio podemos fechar essa issue, qual a sua posição em relação a validação dos dados?

fabioprocopio commented 2 months ago

@Everbero @Rickson-Rocha @vadolasi, sobre a validação de campos obrigatórios, neste momento, não há como determinarmos porque é um requisito de Dalton: garantir que todos os atributos (mesmo que obrigatórios) não sejam bloqueados. Todos os atributos devem ser do tipo texto. Sobre os tamanhos, podem ser nulos, 0 ou N.

Sobre a recomendação de tratamento de erros, acho importante identificar o motivo de um documento, eventualmente, não ter sido gravado.

Everbero commented 2 months ago

Issue fechado seguindo as recomendações de @fabioprocopio e de acordo com as validações os campos já seguem o requisito indicado de validação mínima.