Skip to content

Commit

Permalink
Merge pull request #14 from Draw-Desktop/develop
Browse files Browse the repository at this point in the history
Feat: 게시글 작성 개발 완료
  • Loading branch information
rlagns1234 authored Feb 17, 2024
2 parents d134a21 + cc87659 commit a8960f3
Show file tree
Hide file tree
Showing 6 changed files with 113 additions and 3 deletions.
1 change: 1 addition & 0 deletions config/express.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ module.exports = function () {
require('../src/search/search.route.js')(app);
require('../src/help/help.route.js')(app);
require('../src/popular/popular.route.js')(app);
require('../src/post/post.route.js')(app);

// error handling
app.use((req, res, next) => {
Expand Down
5 changes: 2 additions & 3 deletions config/response.status.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ module.exports = {
SUCCESS_CREATE_LIKE: { isSuccess: true, code: 2010, message: '좋아요를 눌렀습니다.' },
SUCCESS_DELETE_LIKE: { isSuccess: true, code: 2011, message: '좋아요를 취소했습니다.' },
SUCCESS_LOGOUT: { isSuccess: true, code: 2012, message: '로그아웃에 성공했습니다.' },
SUCCESS_CREATE_POST: { isSuccess: true, code: 2013, message: '게시물이 성공적으로 작성되었습니다.' },

//jwt
JWT_TOKEN_NOT_FOUND: { isSuccess: false, code: 'JWT000', message: '토큰을 찾지 못해 사용자 인증을 할 수 없습니다.' },
Expand All @@ -25,9 +26,6 @@ module.exports = {

JWT_GET_ACCESS_TOKEN_SUCCESS: { isSuccess: true, code: 'JWT004', message: 'Access 토큰이 발급되었습니다. ' },

// create err
PARAMETER_IS_EMPTY: { status: StatusCodes.BAD_REQUEST, isSuccess: false, code: 'NOTICE4002', message: '필수 내용이 누락되었습니다.' },

// common err
BAD_REQUEST: { isSuccess: false, code: 'COMMON001', message: '잘못된 요청입니다.' },

Expand All @@ -50,6 +48,7 @@ module.exports = {

// post err
CREATION_FAILED: { status: StatusCodes.BAD_REQUEST, isSuccess: false, code: 'POST4001', message: '생성을 실패하였습니다.' },
PARAMETER_IS_EMPTY: { status: StatusCodes.BAD_REQUEST, isSuccess: false, code: 'POST4002', message: '필수 내용이 누락되었습니다.' },

// like err
LIKE_ALREADY_EXISTS: { isSuccess: false, code: 'LIKE4001', message: '이미 좋아요를 눌렀습니다.' },
Expand Down
23 changes: 23 additions & 0 deletions src/post/post.controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
const postService = require('./post.service.js');
const { response, errResponse } = require('../../config/response.js');
const baseResponse = require('../../config/response.status.js');

//게시물 업로드
exports.postUpload = async (req, res, next) => {
try {
const user_id = res.locals.decoded.userId;
const image = req.file;
console.log("image", image);
if (!user_id ) {
return res.send(errResponse(baseResponse.BAD_REQUEST));
}
if (!image || image.length === 0) {
return res.status(400).json({ success: false, message: "실패" });
}
const result = await postService.createPost(user_id, typeof req.body.data === 'object' ? req.body.data : JSON.parse(req.body.data), image);
return res.send(result);
} catch (error) {
console.error(error);
return next(error);
}
};
37 changes: 37 additions & 0 deletions src/post/post.dao.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
const BaseError = require('../../config/error.js');
const status = require('../../config/response.status.js');
const Post = require('../../models/post.js');
const Image = require('../../models/image.js');
const Link = require('../../models/link.js');
const Tag = require('../../models/tag.js');

exports.addPost = async (body) => {
try{
const newPost = await Post.create(body);
return newPost;
}catch (err) {
console.error('Error creating post:', err);
throw new BaseError(status.CREATION_FAILED);
}
}

exports.addPostLink = async (body) => {
try{
const newPostLink = await Link.create(body);
return newPostLink;
}catch (err) {
console.error('Error creating postLink:', err);
throw new BaseError(status.CREATION_FAILED);
}
}


exports.addPostTag = async (body) => {
try{
const newPostTag = await Tag.create(body);
return newPostTag;
}catch (err) {
console.error('Error creating postTag:', err);
throw new BaseError(status.CREATION_FAILED);
}
}
8 changes: 8 additions & 0 deletions src/post/post.route.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
const { verifyAToken } = require('../middleware/index.js');
const imageUploader = require('../middleware/image.uploader.js');
const postController = require('./post.controller.js');

module.exports = function (app) {
// 1.게시물 업로드
app.post('/post/upload', verifyAToken, imageUploader.imageUploader.single('image'), postController.postUpload);
};
42 changes: 42 additions & 0 deletions src/post/post.service.js