improvement: add validation to contacts create/update

This commit is contained in:
canove
2020-10-04 09:04:36 -03:00
parent 70e89996a3
commit ec9fbee7d3

View File

@@ -1,3 +1,4 @@
import * as Yup from "yup";
import { Request, Response } from "express";
import { getIO } from "../libs/socket";
@@ -9,23 +10,13 @@ import DeleteContactService from "../services/ContactServices/DeleteContactServi
import CheckIsValidContact from "../services/WbotServices/CheckIsValidContact";
import GetProfilePicUrl from "../services/WbotServices/GetProfilePicUrl";
import AppError from "../errors/AppError";
type IndexQuery = {
searchParam: string;
pageNumber: string;
};
export const index = async (req: Request, res: Response): Promise<Response> => {
const { searchParam, pageNumber } = req.query as IndexQuery;
const { contacts, count, hasMore } = await ListContactsService({
searchParam,
pageNumber
});
return res.json({ contacts, count, hasMore });
};
interface ExtraInfo {
name: string;
value: string;
@@ -37,9 +28,33 @@ interface ContactData {
extraInfo?: ExtraInfo[];
}
export const index = async (req: Request, res: Response): Promise<Response> => {
const { searchParam, pageNumber } = req.query as IndexQuery;
const { contacts, count, hasMore } = await ListContactsService({
searchParam,
pageNumber
});
return res.json({ contacts, count, hasMore });
};
export const store = async (req: Request, res: Response): Promise<Response> => {
const newContact: ContactData = req.body;
const schema = Yup.object().shape({
name: Yup.string().required(),
number: Yup.string()
.required()
.matches(/^\d+$/, "Invalid number format. Only numbers is allowed.")
});
try {
await schema.validate(newContact);
} catch (err) {
throw new AppError(err.message);
}
await CheckIsValidContact(newContact.number);
const profilePicUrl = await GetProfilePicUrl(newContact.number);
@@ -72,6 +87,22 @@ export const update = async (
): Promise<Response> => {
const contactData: ContactData = req.body;
const schema = Yup.object().shape({
name: Yup.string(),
number: Yup.string().matches(
/^\d+$/,
"Invalid number format. Only numbers is allowed."
)
});
try {
await schema.validate(contactData);
} catch (err) {
throw new AppError(err.message);
}
await CheckIsValidContact(contactData.number);
const { contactId } = req.params;
const contact = await UpdateContactService({ contactData, contactId });