Skip to content

Commit

Permalink
Merge pull request #250 from ChibuikemMichaelIlonze/edit-blog-post
Browse files Browse the repository at this point in the history
feat: API Endpoint for Editing a Blog Post by Id
  • Loading branch information
incredible-phoenix246 authored Jul 24, 2024
2 parents ea6f40e + 56d1047 commit c42023c
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 1 deletion.
36 changes: 36 additions & 0 deletions src/controllers/updateBlogController.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { Request, Response } from "express";
import { updateBlogPost } from "../services/updateBlog.services";

export const updateBlogController = async (req: Request, res: Response) => {
const { id } = req.params;
const { title, content, published_at, image_url } = req.body;

console.log("Controller - updateBlogController called with id:", id);
console.log("Controller - Request body:", req.body);

try {
const updatedBlog = await updateBlogPost(
id,
title,
content,
published_at,
image_url,
);
console.log("Controller - Blog post updated successfully:", updatedBlog);

return res.status(200).json({
status: "success",
status_code: 200,
message: "Blog post updated successfully",
data: updatedBlog,
});
} catch (error) {
console.error("Controller - Error updating blog post:", error);

return res.status(500).json({
status: "unsuccessful",
status_code: 500,
message: "Failed to update the blog post. Please try again later.",
});
}
};
8 changes: 7 additions & 1 deletion src/routes/blog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,18 @@ import { Router } from "express";
import { authMiddleware } from "../middleware";
import { createBlogController } from "../controllers/createBlogController";
import { BlogController } from "../controllers/BlogController";
import { updateBlogController } from "../controllers/updateBlogController";

const blogRouter = Router();
const blogController = new BlogController();

blogRouter.post("/create", authMiddleware, createBlogController);
blogRouter.get("/", authMiddleware, blogController.listBlogs.bind(blogController));
blogRouter.get(
"/",
authMiddleware,
blogController.listBlogs.bind(blogController),
);
blogRouter.put("/:id", authMiddleware, updateBlogController);

blogRouter.delete("/:id", blogController.deleteBlogPost.bind(blogController));

Expand Down
42 changes: 42 additions & 0 deletions src/services/updateBlog.services.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { Blog } from "../models/blog";
import AppDataSource from "../data-source";

export const updateBlogPost = async (
id: string,
title: string,
content: string,
published_at?: Date,
image_url?: string,
) => {
const blogRepository = AppDataSource.getRepository(Blog);

let blog;
try {
blog = await blogRepository.findOne({ where: { id } });
} catch (error) {
throw new Error("Error finding blog post.");
}

if (!blog) {
throw new Error("Blog post not found.");
}

blog.title = title;
blog.content = content;

if (published_at) {
blog.published_at = published_at;
}

if (image_url) {
blog.image_url = image_url;
}

try {
await blogRepository.save(blog);
} catch (error) {
console.error("Service - Error saving blog post:", error);
}

return blog;
};

0 comments on commit c42023c

Please sign in to comment.