Untitled

 avatar
unknown
plain_text
a year ago
1.6 kB
2
Indexable
const regexData = /^\d{2}\/\d{2}\/\d{4}$/;

const validName = (name) => {
  if (!name) {
    return { message: 'O campo "name" é obrigatório' };
  }
  if (name.length < 3) {
    return { message: 'O "name" deve ter pelo menos 3 caracteres' };
  }
  return {};
};

const validAge = (age) => {
  if (!age) {
    return { message: 'O campo "age" é obrigatório' };
  }
  if (age < 18 || !Number.isInteger(age) || typeof age !== 'number') {
    return { message: 'O campo "age" deve ser um número inteiro igual ou maior que 18' };
  }
  return {};
};

const validRate = (rate) => {
  if (typeof rate === 'undefined') {
    return { message: 'O campo "rate" é obrigatório' };
  }
  if (rate < 1 || rate > 5 || !Number.isInteger(rate)) {
    return { message: 'O campo "rate" deve ser um número inteiro entre 1 e 5' };
  }
  return {};
};

const validTalk = (talk) => {
  if (!talk) {
    return { message: 'O campo "talk" é obrigatório' };
  }
  if (!talk.watchedAt) {
    return { 
      message: 'O campo "watchedAt" é obrigatório',
    };
  }
  if (!regexData.test(talk.watchedAt)) {
    return { 
      message: 'O campo "watchedAt" deve ter o formato "dd/mm/aaaa"',
    };
  }
  if (validRate(talk.rate)) {
    return validRate(talk.rate);
  }
};
const validTalker = (talker) => {
  const name = validName(talker.name);
  const age = validAge(talker.age);
  const talk = validTalk(talker.talk);
  if (name.message) {
    return name;
  }
  if (age.message) {
    return age;
  }
  if (talk.message && talk) {
    return talk;
  }
  return {};
};
 
module.exports = {
  validTalker,
  validRate,
  validTalk,
  validAge,
  validName,
};
Leave a Comment