Skip to content

Commit e4c45fe

Browse files
feat: 🎸 crawl blogs data
1 parent 6ccb24e commit e4c45fe

File tree

11 files changed

+288
-6
lines changed

11 files changed

+288
-6
lines changed

‎.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
/node_modules
22
.env
3+
blogAPIs.js

‎package-lock.json

+120
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"dependencies": {
2121
"@matg97/mongoose-plugin-autoinc": "^1.1.10",
2222
"and": "^0.0.3",
23+
"axios": "^1.3.5",
2324
"bcrypt": "^5.1.0",
2425
"build": "^0.1.4",
2526
"cookie-parser": "^1.4.6",

‎src/controllers/Blog.js

+36-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,38 @@
1-
function BlogController() {}
1+
import { crawlBlogs, createNewBlog } from "../services/crudDatabase/blog.js";
2+
3+
function BlogController() {
4+
this.crawlBlogs = async (req, res, next) => {
5+
const createdBlogs = await crawlBlogs();
6+
7+
createdBlogs
8+
? res.status(200).json({
9+
message: "Successfully",
10+
data: createdBlogs,
11+
error: null
12+
})
13+
: res.status(400).json({
14+
message: "Failed",
15+
data: null,
16+
error: null
17+
});
18+
};
19+
20+
this.createNewBlog = async (req, res, next) => {
21+
const { blogAPI, type } = req.body;
22+
const createdBlog = await createNewBlog(blogAPI, type);
23+
24+
createdBlog
25+
? res.status(200).json({
26+
message: "Successfully",
27+
data: createdBlog,
28+
error: null
29+
})
30+
: res.status(400).json({
31+
message: "Failed",
32+
data: null,
33+
error: null
34+
});
35+
};
36+
}
237

338
export default new BlogController();

‎src/helpers/index.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,10 @@ export const comparePassword = (plainPassword, hashPassword, callback) => {
6969
};
7070

7171
export const convertUnixTimestampToNumber = (unixTimestamp) => {
72-
const date = new Date(unixTimestamp * 1000);
72+
const date =
73+
String(unixTimestamp).length === 10
74+
? new Date(unixTimestamp * 1000)
75+
: new Date(unixTimestamp);
7376

7477
const year =
7578
date.getFullYear() < 10

‎src/models/Blog.js

+19-4
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,35 @@
11
import mongoose from "mongoose";
2+
// import AutoIncrementInc from "mongoose-sequence";
3+
// const AutoIncrement = AutoIncrementInc(mongoose);
24

35
const BlogSchema = new mongoose.Schema(
46
{
5-
blogId: {
6-
type: Number,
7-
required: true,
8-
unique: true
7+
type: {
8+
type: String,
9+
required: true
910
},
1011
title: {
1112
type: String,
1213
trim: true,
1314
required: true
1415
},
16+
description: {
17+
type: String,
18+
trim: true
19+
},
20+
thumbnail: {
21+
type: String,
22+
trim: true
23+
},
1524
content: {
1625
type: String,
1726
trim: true,
1827
required: true
1928
},
29+
publishDate: {
30+
type: String,
31+
required: true
32+
},
2033
userId: {
2134
type: String,
2235
trim: true,
@@ -26,5 +39,7 @@ const BlogSchema = new mongoose.Schema(
2639
{ versionKey: false }
2740
);
2841

42+
// BlogSchema.plugin(AutoIncrement, { inc_field: "blogId" });
43+
2944
const BlogModel = mongoose.model("Blog", BlogSchema);
3045
export default BlogModel;

‎src/models/index.js

+4
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@ import InvestorModel from "./Investor.js";
33
import CoinModel from "./Coin.js";
44
import TagModel from "./Tag.js";
55
import TransactionModel from "./Transaction.js";
6+
import BlogModel from "./Blog.js";
7+
import CommentModel from "./Comment.js";
68

79
export {
810
UserModel,
911
InvestorModel,
1012
CoinModel,
1113
TagModel,
1214
TransactionModel,
15+
BlogModel,
16+
CommentModel
1317
};

‎src/routes/blog.js

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import BlogController from "../controllers/Blog.js";
2+
import express from "express";
3+
const router = express.Router();
4+
5+
router.post("/crawl", BlogController.crawlBlogs);
6+
router.post("/create", BlogController.createNewBlog);
7+
8+
export default router;

‎src/routes/index.js

+2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import authRouter from "./auth.js";
22
import userRouter from "./user.js";
33
import displayRouter from "./display.js";
4+
import blogRouter from "./blog.js";
45

56
function routing(app) {
67
app.use("/auth", authRouter);
78
app.use("/display", displayRouter);
89
app.use("/user", userRouter);
10+
app.use("/blog", blogRouter);
911
app.use("*", (req, res, next) => {
1012
res.status(404).json({
1113
message: "not-found",

0 commit comments

Comments
 (0)