Skip to content

Commit c9686aa

Browse files
creating categorySchema model and category controller in the backend
1 parent 760da61 commit c9686aa

File tree

5 files changed

+56
-0
lines changed

5 files changed

+56
-0
lines changed

server/controllers/category.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const Category = require("../models/categorySchema");
2+
const slugify = require("slugify")
3+
4+
exports.create = (req,res)=>{
5+
const {name} = req.body
6+
let slug = slugify(name).toLowerCase()
7+
8+
let category = new Category({name,slug})
9+
10+
category.save((err,data)=>{
11+
if (err){
12+
return res.status(400).json({
13+
error:err
14+
})
15+
}
16+
res.json(data)
17+
})
18+
}

server/models/categorySchema.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
const mongoose = require('mongoose');
2+
3+
const CategorySchema = new mongoose.Schema(
4+
{
5+
name: {
6+
type: String,
7+
trim: true,
8+
required: true,
9+
max: 32
10+
},
11+
slug: {
12+
type: String,
13+
unique: true,
14+
index: true
15+
}
16+
},
17+
{ timestamps: true }
18+
);
19+
20+
module.exports = mongoose.model("Category", CategorySchema);

server/routes/category.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const express = require('express')
2+
const router = express.Router();
3+
const {create} = require("../controllers/category.js")
4+
const {requireLogin,adminAuthenticationMiddleware} = require("../controllers/userAuthentication.js")
5+
6+
const {runValidation} = require("../validators")
7+
const {createCategoryValidator} = require("../validators/category")
8+
9+
router.post('/category',createCategoryValidator,runValidation,requireLogin,adminAuthenticationMiddleware,create);
10+
11+
module.exports = router;

server/server.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ require("dotenv").config();
88
const blogRoutes = require("./routes/blog")
99
const authRoutes = require("./routes/auth")
1010
const userRoutes = require("./routes/user")
11+
const categoryRoutes = require("./routes/category")
1112

1213
const app = express()
1314

@@ -33,6 +34,7 @@ if (process.env.NODE_ENV === 'development') {
3334
app.use("/api",blogRoutes);
3435
app.use("/api",authRoutes);
3536
app.use("/api",userRoutes);
37+
app.use("/api",categoryRoutes);
3638
// cors
3739
app.use(cors());
3840

server/validators/category.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const {check} = require("express-validator");
2+
3+
exports.createCategoryValidator = [
4+
check('name').not().isEmpty().withMessage("hold up!! Name is required")
5+
];

0 commit comments

Comments
 (0)