forked from TheByteFlow/Inker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathblog.router.ts
49 lines (41 loc) · 1.32 KB
/
blog.router.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { Router } from "express";
import { validate } from "@/middlewares/validate.middleware";
import { BlogRepository } from "@/repositories/implementation/blog.repository";
import { BlogService } from "@/services/implementation/blog.service";
import { BlogController } from "@/controllers/implementation/blog.controller";
import { UserRepository } from "@/repositories/implementation/user.repository";
import { createBlogSchema, editBlogSchema } from "@/schema";
import authenticate from "@/middlewares/verify-token.middleware";
const router = Router();
const blogRepository = new BlogRepository();
const userRepository = new UserRepository();
const blogService = new BlogService(blogRepository, userRepository);
const blogController = new BlogController(blogService);
router.post(
"/",
validate(createBlogSchema),
authenticate("user"),
blogController.createBlog.bind(blogController)
);
router.get(
"/",
authenticate("user"),
blogController.getAllBlogs.bind(blogController)
);
router.get(
"/:id",
authenticate("user"),
blogController.getBlogById.bind(blogController)
);
router.put(
"/:id",
validate(editBlogSchema),
authenticate("user"),
blogController.updateBlog.bind(blogController)
);
router.delete(
"/:id",
authenticate("user"),
blogController.deleteBlog.bind(blogController)
);
export default router;