diff --git a/app.js b/app.js index 701ad0d..1396269 100644 --- a/app.js +++ b/app.js @@ -161,6 +161,8 @@ import SeoRoute from "./resources/SEO&Analytics/SEORouter.js"; //Affiliate Routes import AffiliateRoute from "./resources/Affiliate&Coupon/Affiliate/AffiliateRoute.js"; +//Blog Routes +import BlogRoute from "./resources/Blog/BlogRoute.js"; //Coupon Routes import CouponRoute from "./resources/Affiliate&Coupon/Coupon/CouponRoute.js"; //short urls @@ -218,6 +220,8 @@ app.use("/api/v1/affiliate", AffiliateRoute); //Coupons app.use("/api/v1/coupon", CouponRoute); +//Blog +app.use("/api/v1/blog", BlogRoute); //config specialty // app.use("/api/config/specialty", SpecialtiesRouter); //specialties diff --git a/resources/Blog/BlogController.js b/resources/Blog/BlogController.js new file mode 100644 index 0000000..79abfd3 --- /dev/null +++ b/resources/Blog/BlogController.js @@ -0,0 +1,63 @@ +import Blog from "./BlogModel.js"; + +export const createBlog = async (req, res) => { + const { title, tags, image, blog_content } = req.body; + console.log(req.body); + + // Checking Fields + if (!title || !tags || !image || !blog_content) { + return res.status(400).json({ + success: false, + message: "All fields are mandatory", + }); + } + + try { + let images = []; + let Allfiles = req.files.image; + console.log(Allfiles); + // if (!Array.isArray(Allfiles)) { + // Allfiles = [Allfiles]; // Convert to array if it's not already + // } + + // Allfiles.forEach((file) => { + // if (typeof file.tempFilePath === "string") { + // let filepath = file.tempFilePath; + // images.push(filepath); + // } + // }); + + // const newBlog = await Blog.create({ + // title, + // tags, + // image: images, // Assign the array of image file paths + // blog_content, + // }); + + res.status(201).json({ + success: true, + message: "Blog created successfully", + data: images, + }); + } catch (error) { + console.error("Error creating blog:", error); + res.status(500).json({ + success: false, + message: error.message ? error.message : "Internal server error", + }); + } +}; +export const getAllBlog = async (req, res) => { + try { + const saveData = await Blog.find(); + res.status(200).json({ + success: true, + message: saveData, + }); + } catch { + res.status(500).json({ + success: false, + message: "Internal server error", + }); + } +}; diff --git a/resources/Blog/BlogModel.js b/resources/Blog/BlogModel.js new file mode 100644 index 0000000..1b3a65b --- /dev/null +++ b/resources/Blog/BlogModel.js @@ -0,0 +1,28 @@ +import mongoose from "mongoose"; + +const { Schema, model } = mongoose; + +const blogSchema = new Schema( + { + title: { + type: String, + required: [true, "Title is required"], + }, + tags: { + type: [String], + required: [true, "Tags are required"], + }, + image: { + type: String, + }, + blog_content: { + type: Object, + required: [true, "Content is required"], + }, + }, + { timestamps: true } +); + +const Blog = model("Blog", blogSchema); + +export default Blog; diff --git a/resources/Blog/BlogRoute.js b/resources/Blog/BlogRoute.js new file mode 100644 index 0000000..772b7b6 --- /dev/null +++ b/resources/Blog/BlogRoute.js @@ -0,0 +1,11 @@ +import express from "express"; + +import { createBlog, getAllBlog } from "./BlogController.js"; +import { isAuthenticatedUser, authorizeRoles } from "../../middlewares/auth.js"; + +const router = express.Router(); + +router.post("/create", createBlog); +router.get("/getallblog", getAllBlog); + +export default router; diff --git a/resources/Blog/dummy.json b/resources/Blog/dummy.json new file mode 100644 index 0000000..90dfec3 --- /dev/null +++ b/resources/Blog/dummy.json @@ -0,0 +1,5 @@ +[ + { + "title": "String0" + } +]