changed some lines to be compaitable with rememberme-cli

This commit is contained in:
Yusuf İpek
2021-09-05 17:26:37 +03:00
parent 408cec0c01
commit cd80c9f12c
5 changed files with 73 additions and 64 deletions
+1 -1
View File
@@ -55,7 +55,7 @@ Here are the example requests you can make.
{
"name": "Mike",
"metAt": "Wall Maria Cafe",
"place": "Üsküdar"
"place": "Üsküdar",
"contact": {
"phone": "12345",
"email": "[email protected]",
+22 -40
View File
@@ -4,68 +4,55 @@ const Joi = require("joi");
const personSchema = new mongoose.Schema({
name: {
type: String,
minlength: 3,
maxlength: 50,
trim: true,
required: true,
},
metAt: {
type: String,
minlength: 3,
maxlength: 50,
required: true,
},
place: {
type: String,
minlength: 3,
maxlength: 50,
},
contact: {
type: new mongoose.Schema({
phone: {
type: String,
minlength: 5,
maxlength: 20,
},
email: {
type: String,
minlength: 5,
maxlength: 255,
},
socialmedia: {
type: new mongoose.Schema({
instagram: {
type: String,
minlength: 3,
maxlength: 15,
unqiue: true,
},
youtube: {
type: String,
minlength: 3,
maxlength: 15,
},
twitter: {
type: String,
minlength: 3,
maxlength: 15,
},
}),
},
website: {
type: String,
minlength: 5,
maxlength: 25,
},
}),
},
birth: {
type: String,
maxlength: 25,
},
age: {
type: Number,
maxlength: 100,
type: String,
maxlength: 2,
},
likes: {
type: [String],
@@ -75,22 +62,18 @@ const personSchema = new mongoose.Schema({
},
occupation: {
type: String,
minlength: 3,
maxlength: 50,
},
lastseen: {
type: String,
minlength: 3,
maxlength: 50,
},
nextcontact: {
type: String,
minlength: 3,
maxlength: 50,
},
notes: {
type: String,
minlength: 3,
maxlength: 500,
},
tags: {
@@ -105,8 +88,7 @@ const personSchema = new mongoose.Schema({
},
createdAt: {
type: String,
maxlength: 25,
required: true,
maxlength: 30,
},
editedAt: {
type: Date,
@@ -119,29 +101,29 @@ const Person = mongoose.model("Person", personSchema);
function validatePerson(value) {
const schema = Joi.object({
name: Joi.string().min(3).max(50).required(),
metAt: Joi.string().min(3).max(50).required(),
place: Joi.string().min(3).max(50),
name: Joi.string().max(50).required(),
metAt: Joi.string().max(50).required(),
place: Joi.string().allow("").max(50),
contact: Joi.object({
phone: Joi.string().min(5).max(20),
email: Joi.string().email().min(5).max(255),
phone: Joi.string().allow("").max(20),
email: Joi.string().allow("").email().max(255),
socialmedia: Joi.object({
instagram: Joi.string().min(3).max(15),
youtube: Joi.string().min(3).max(15),
twitter: Joi.string().min(3).max(15),
instagram: Joi.string().allow("").max(15),
youtube: Joi.string().allow("").max(15),
twitter: Joi.string().allow("").max(15),
}),
website: Joi.string().min(5).max(25),
website: Joi.string().allow("").max(25),
}),
birth: Joi.string().max(25),
age: Joi.number().max(100),
likes: Joi.array(),
dislikes: Joi.array(),
occupation: Joi.string().min(3).max(50),
lastseen: Joi.string().min(3).max(50),
nextcontact: Joi.string().min(3).max(50),
notes: Joi.string().min(3).max(500),
tags: Joi.array().max(6),
createdAt: Joi.string().max(25).required(),
birth: Joi.string().allow("").max(25),
age: Joi.string().allow("").max(100),
likes: Joi.array().allow(""),
dislikes: Joi.array().allow(""),
occupation: Joi.string().allow("").max(50),
lastseen: Joi.string().allow("").max(50),
nextcontact: Joi.string().allow("").max(50),
notes: Joi.string().allow("").max(500),
tags: Joi.array().allow("").max(6),
createdAt: Joi.string().allow("").max(30),
});
return schema.validate(value, { allowUnknown: true });
}
+2
View File
@@ -14,6 +14,8 @@
"supertest": "^6.1.4"
},
"scripts": {
"start": "node index.js",
"devStart": "nodemon index.js",
"test": "jest --watchAll --verbose --runInBand --coverage"
}
}
+15 -2
View File
@@ -5,7 +5,7 @@ const express = require("express");
const router = express.Router();
router.get("/", auth, async (req, res) => {
const people = await Person.find();
const people = await Person.find().sort("field name");
res.send(people);
});
@@ -77,6 +77,7 @@ router.put("/:id", auth, validateObjectId, async (req, res) => {
const {
name,
place,
metAt,
contact,
birth,
age,
@@ -87,11 +88,22 @@ router.put("/:id", auth, validateObjectId, async (req, res) => {
nextcontact,
notes,
tags,
createdAt,
} = person;
if (!req.body.name) req.body.name = name;
if (!req.body.metAt) req.body.metAt = metAt;
if (!req.body.place) req.body.place = place;
if (!req.body.contact) req.body.contact = contact;
if (!req.body.contact.socialmedia.instagram)
req.body.contact.socialmedia.instagram = contact.socialmedia.instagram;
if (!req.body.contact.socialmedia.youtube)
req.body.contact.socialmedia.youtube = contact.socialmedia.youtube;
if (!req.body.contact.socialmedia.twitter)
req.body.contact.socialmedia.twitter = contact.socialmedia.twitter;
if (!req.body.contact.phone) req.body.contact.phone = contact.phone;
if (!req.body.contact.email) req.body.contact.email = contact.email;
if (!req.body.birth) req.body.birth = birth;
if (!req.body.age) req.body.age = age;
if (!req.body.likes) req.body.likes = likes;
@@ -101,6 +113,7 @@ router.put("/:id", auth, validateObjectId, async (req, res) => {
if (!req.body.nextcontact) req.body.nextcontact = nextcontact;
if (!req.body.notes) req.body.notes = notes;
if (!req.body.tags) req.body.tags = tags;
if (!req.body.createdAt) req.body.createdAt = createdAt;
const { error } = validate(req.body);
if (error) return res.status(400).send(error.details[0].message);
+12
View File
@@ -199,6 +199,18 @@ describe("person route", () => {
person2 = {
name: "Jimmy",
metAt: "Texas",
// created contact empty because I want tests to work with rememberme-cli
contact: {
socialmedia: {
instagram: "",
youtube: "",
twitter: "",
},
phone: "",
email: "",
},
createdAt: "11.11.2021",
};
});