Skip to content

Commit

Permalink
creating tagSchema model and tag controller and handling errors and a…
Browse files Browse the repository at this point in the history
…voiding duplicate tag in the backend
  • Loading branch information
pramit-marattha committed Jan 14, 2021
1 parent 76bc2bd commit 844d597
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 0 deletions.
61 changes: 61 additions & 0 deletions server/controllers/tag.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
const Tag = require("../models/tagSchema");
const slugify = require("slugify");
const {errorHandler} = require("../helpers/databaseErrorHandler")

exports.create = (req,res)=>{
const {name} = req.body
let slug = slugify(name).toLowerCase()

let tag = new Tag({name,slug})

tag.save((err,data)=>{
if (err){
return res.status(400).json({
error:errorHandler(err)
})
}
res.json(data)
})
};

exports.list = (req,res)=>{
Tag.find({}).exec((err,data)=>{
if (err){
return res.status(400).json({
error:errorHandler(err)
})
}
res.json(data)
});
};


exports.read =(req,res)=>{
const slug = req.params.slug.toLowerCase()

Tag.findOne({slug}).exec((err,tag)=>{
if (err){
return res.status(400).json({
error:errorHandler(err)
})
}
res.json(tag)
});
};



exports.remove =(req,res)=>{
const slug = req.params.slug.toLowerCase()

Tag.findOneAndRemove({slug}).exec((err,data)=>{
if (err){
return res.status(400).json({
error:errorHandler(err)
})
}
res.json({
message: "Tag Deleted"
})
});
};
20 changes: 20 additions & 0 deletions server/models/tagSchema.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
const mongoose = require('mongoose');

const TagSchema = new mongoose.Schema(
{
name: {
type: String,
trim: true,
required: true,
max: 32
},
slug: {
type: String,
unique: true,
index: true
}
},
{ timestamps: true }
);

module.exports = mongoose.model("Tag", TagSchema);
15 changes: 15 additions & 0 deletions server/routes/tag.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
const express = require('express')
const router = express.Router();
const {create,list,read,remove} = require("../controllers/tag.js")
const {requireLogin,adminAuthenticationMiddleware} = require("../controllers/userAuthentication.js")

const {runValidation} = require("../validators")
const {createTagValidator} = require("../validators/Tag")

router.post('/tag',createTagValidator,runValidation,requireLogin,adminAuthenticationMiddleware,create);
router.get('/taglists',list)
router.get('/tag/:slug',read)
router.delete('/tag/:slug',requireLogin,adminAuthenticationMiddleware,remove)

module.exports = router;

2 changes: 2 additions & 0 deletions server/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const blogRoutes = require("./routes/blog")
const authRoutes = require("./routes/auth")
const userRoutes = require("./routes/user")
const categoryRoutes = require("./routes/category")
const tagRoutes = require("./routes/tag")

const app = express()

Expand All @@ -35,6 +36,7 @@ app.use("/api",blogRoutes);
app.use("/api",authRoutes);
app.use("/api",userRoutes);
app.use("/api",categoryRoutes);
app.use("/api",tagRoutes);
// cors
app.use(cors());

Expand Down
5 changes: 5 additions & 0 deletions server/validators/tag.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
const {check} = require("express-validator");

exports.createTagValidator = [
check('name').not().isEmpty().withMessage("hold up!! Name is required")
];

0 comments on commit 844d597

Please sign in to comment.