Kategori ve Kaydetme hakkında yenilikler yapıldı. Yeni React kodlarına uyum sağlandı.

This commit is contained in:
Batuhan 2025-02-24 19:53:37 +03:00
parent a88dc25ef4
commit 5202ace0be
8 changed files with 104 additions and 3 deletions

View File

@ -1,5 +1,6 @@
const Blogs = require("../modules/blogs/models/Blogs"); const Blogs = require("../modules/blogs/models/Blogs");
const Categories = require("../modules/blogs/models/Categories"); const Categories = require("../modules/blogs/models/Categories");
const SavedBlogs = require("../modules/blogs/models/SavedBlogs");
const Login = require("../modules/logins/models/login"); const Login = require("../modules/logins/models/login");
const User = require("../modules/users/models/user"); const User = require("../modules/users/models/user");
@ -27,6 +28,22 @@ Categories.hasMany(Blogs, {
}); });
Blogs.belongsTo(Categories); Blogs.belongsTo(Categories);
Blogs.hasMany(SavedBlogs, {
foreignKey:{
allowNull: false,
unique: false
}
});
SavedBlogs.belongsTo(Blogs);
User.hasMany(SavedBlogs, {
foreignKey:{
allowNull: false,
unique: false
}
});
SavedBlogs.belongsTo(User);
exports.createTesting = async function(){ exports.createTesting = async function(){
const resultLogins = await Login.findAll(); const resultLogins = await Login.findAll();
if(resultLogins.length == 0){ if(resultLogins.length == 0){

View File

@ -3,10 +3,12 @@ const app = express();
// ROUTES // ROUTES
const routerGet = require("./routes/get"); const routerGet = require("./routes/get");
const routerPost = require("./routes/post");
const routerPage = require("./routes/page"); const routerPage = require("./routes/page");
// USES // USES
app.use(routerGet); app.use(routerGet);
app.use(routerPost);
app.use(routerPage); app.use(routerPage);
module.exports = app; module.exports = app;

View File

@ -0,0 +1,32 @@
const Blogs = require("../models/Blogs");
const SavedBlogs = require("../models/SavedBlogs");
const { getSaved } = require("./query");
const { checkLenText } = require("./tools");
exports.createBlog = async function(data, user){
const checkTitle = checkLenText(data.title, 5, 25);
const checkText = checkLenText(data.text, 10, 1000);
if(checkTitle && checkText){
return await Blogs.create({
title: data.title,
text: data.text,
categoryId: data.cate,
userId: user.id
});
}else{
return false;
};
};
exports.createSaved = async function({blogId, userId}){
const checkQuery = await getSaved({blogId: blogId, userId: userId});
if(!checkQuery){
return await SavedBlogs.create({
blogId: blogId,
userId: userId
});
}else{
return false;
};
};

View File

@ -1,10 +1,12 @@
const User = require("../../users/models/user"); const User = require("../../users/models/user");
const Blogs = require("../models/Blogs"); const Blogs = require("../models/Blogs");
const Categories = require("../models/Categories"); const Categories = require("../models/Categories");
const SavedBlogs = require("../models/SavedBlogs");
exports.getBlogs = async function(){ exports.getBlogs = async function(){
return await Blogs.findAll({ return await Blogs.findAll({
include: [User, Categories] include: [User, Categories],
order: [["createdAt", "DESC"]]
}); });
}; };
@ -15,7 +17,8 @@ exports.getBlogsWithUsername = async function({username}){
where: { where: {
username: username username: username
} }
}] }],
order: [["createdAt", "DESC"]]
}); });
}; };
@ -28,7 +31,8 @@ exports.getBlogsWithCategory = async function({categoryId, categoryTitle}){
}, (categoryTitle) && { }, (categoryTitle) && {
title: categoryTitle title: categoryTitle
}] }]
}] }],
order: [["createdAt", "DESC"]]
}); });
}; };
@ -42,3 +46,14 @@ exports.getCategoryWithParams = async function({categoryId, categoryTitle}){
] ]
}); });
}; };
// SAVED
exports.getSaved = async function({userId, blogId}){
return await SavedBlogs.findOne({
where:{
userId: userId,
blogId: blogId
}
});
};

View File

@ -0,0 +1,3 @@
exports.checkLenText = function(text, minLen, maxLen){
return (text.length >= minLen && text.length <= maxLen) && true;
};

View File

@ -0,0 +1,3 @@
const Database = require("../../../database/db");
module.exports = Database.define("savedBlogs",{});

View File

@ -1,6 +1,7 @@
const express = require("express"); const express = require("express");
const auth = require("../../logins/middlewares/auth"); const auth = require("../../logins/middlewares/auth");
const { getBlogs, getBlogsWithUsername, getBlogsWithCategory } = require("../middlewares/query"); const { getBlogs, getBlogsWithUsername, getBlogsWithCategory } = require("../middlewares/query");
const Categories = require("../models/Categories");
const router = express(); const router = express();
router.get("/get/blogs/all", auth, async function (req, res) { router.get("/get/blogs/all", auth, async function (req, res) {
@ -17,4 +18,7 @@ router.get("/get/blogs/user/:username", auth, async function (req, res) {
})); }));
}); });
router.get("/get/blogs/cate/all", async function(req, res) {
res.json(await Categories.findAll());
});
module.exports = router; module.exports = router;

View File

@ -0,0 +1,25 @@
const express = require("express");
const auth = require("../../logins/middlewares/auth");
const { createBlog, createSaved } = require("../middlewares/post");
const { getSaved } = require("../middlewares/query");
const router = express();
router.post("/post/blogs/create", auth, async function(req, res) {
try {
const result = await createBlog(req.body, req.session.user);
if(result){
return res.json({Status: "Success", Message: "Başarıyla paylaşıldı.", Ico: "/icons/success.svg"});
}else{
return res.json({Status: "Failed", Message: "Bir hatadan dolayı paylaşılamadı", Ico: "/icons/failed.svg"});
}
} catch (error) {
return res.json({Status: "Failed", Message: "Bir hatadan dolayı paylaşılamadı", Ico: "/icons/failed.svg"});
};
});
router.post("/post/blogs/save", auth, async function(req, res) {
const result = await createSaved({userId: req.session.user.id, blogId: req.body.blogId});
return (result) && res.json({Status: "Success"});
});
module.exports = router;