Skip to content

Commit

Permalink
Merge pull request #207 from UMC-README/dev
Browse files Browse the repository at this point in the history
dev -> main 최신화
  • Loading branch information
gs0428 authored Aug 17, 2024
2 parents e246e0c + c4601a4 commit fe63d43
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 44 deletions.
2 changes: 1 addition & 1 deletion domains/admin/admin.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export const createRoomsController = async (req, res, next) => {

export const updateRoomsController = async (req, res, next) => {
try {
const result = await updateRoomsService(req.body);
const result = await updateRoomsService(req.body, req.params.roomId);
res.status(200).json(response(status.SUCCESS, result));
} catch (error) {
next(error);
Expand Down
41 changes: 15 additions & 26 deletions domains/admin/admin.dao.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,14 @@ import {
getSubmitStateSQL,
userRequestAcceptSQL,
userRequestRejectSQL,
beforeUpdateRoomsSQL,
} from "./admin.sql.js";

import schedule from "node-schedule";

export const createRoomsDao = async (body, userId, roomInviteUrl) => {
try {
if(body.max_penalty > 10) throw new Error("패널티는 최대 10개까지만 생성이 가능합니다.");
const conn = await pool.getConnection();
const [result] = await conn.query(createRoomsSQL, [
userId,
Expand All @@ -51,40 +53,28 @@ export const createRoomsDao = async (body, userId, roomInviteUrl) => {
await conn.query(userRoomSQL, [userId, roomId, body.admin_nickname]);

conn.release();
return {
roomId: roomId, // 생성된 방 Id 반환
roomImage: body.room_image,
adminNickname: body.admin_nickname,
roomName: body.room_name,
roomPassword: body.room_password,
maxPenalty: body.max_penalty,
roomInviteUrl,
};
return { roomId, result, roomInviteUrl };
} catch (error) {
console.error("공지방 생성하기 에러");
console.error("공지방 생성하기 에러", error);
throw new BaseError(status.INTERNAL_SERVER_ERROR);
}
};

export const updateRoomsDao = async (body) => {
export const updateRoomsDao = async (body, roomId) => {
try {
if(body.max_penalty > 10) throw new Error("패널티는 최대 10개까지만 생성이 가능합니다.");
const conn = await pool.getConnection();
const [beforeRoomsData] = await conn.query(beforeUpdateRoomsSQL, [roomId]);
await conn.query(updateRoomsSQL, [
body.room_image,
body.admin_nickname,
body.room_name,
body.room_password,
body.max_penalty,
body.id,
roomId
]);
conn.release();
return {
roomImage: body.room_image,
adminNickname: body.admin_nickname,
roomName: body.room_name,
passWord: body.room_password,
maxPenalty: body.max_penalty,
};
return { beforeRoomsData };
} catch (error) {
console.error("공지방 수정하기 에러:", error);
throw new BaseError(status.INTERNAL_SERVER_ERROR);
Expand All @@ -94,9 +84,8 @@ export const updateRoomsDao = async (body) => {
export const deleteRoomsDao = async (body) => {
try {
const conn = await pool.getConnection();
const { roomId } = body;
await conn.query(deleteRoomsSQL, roomId);
return { deletedRoomId: roomId };
await conn.query(deleteRoomsSQL, body.roomId);
return true;
} catch (error) {
console.error("공지방 삭제하기 에러:", error);
throw new BaseError(status.INTERNAL_SERVER_ERROR);
Expand Down Expand Up @@ -386,15 +375,15 @@ export const userSubmitDao = async (roomId) => {
const conn = await pool.getConnection();

const [rows] = await conn.query(getPostCountSQL);
const countPost = rows[0]?.count || 0;
if (countPost === 0) return { massage: "공지가 없습니다." };
const countPost = rows[0]?.count || 0;
if(countPost === 0) return {message : "공지가 없습니다."};

const [userSubmissions] = await conn.query(userSubmitSQL, roomId);
const [submitStates] = await conn.query(getSubmitStateSQL, roomId);

conn.release();
return { userSubmissions, submitStates };
} catch (error) {
return { userSubmissions , submitStates };
} catch (error) {
console.log("확인 요청 조회 에러");
throw new BaseError(status.INTERNAL_SERVER_ERROR);
}
Expand Down
33 changes: 26 additions & 7 deletions domains/admin/admin.dto.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
export const createRoomsDTO = (createRoomsData) => {
export const createRoomsDTO = (roomData) => {
return {
...createRoomsData,
roomId : roomData.roomId,
roomImage : roomData.room_image,
adminNickname: roomData.admin_nickname,
roomName: roomData.room_name,
roomPassword: roomData.room_password,
maxPenalty: roomData.max_penalty,
roomInviteUrl : roomData.roomInviteUrl,
};
};

export const updateRoomsDTO = (updateRoomsData) => {
return {
...updateRoomsData,
};
export const updateRoomsDTO = (beforeRoomsData) => {
return{ BeforeRoomsData : beforeRoomsData[0], message : "공지방 수정에 성공하였습니다."};
};

export const createPostDTO = (createPostData) => {
Expand All @@ -26,5 +30,20 @@ export const userSubmitDTO = (userSubmissions, submitStates) => {
const pendingStates = submitStates.filter(state => state.submit_state === 'PENDING');
const completeStates = submitStates.filter(state => state.submit_state === 'COMPLETE');

return { userSubmissions, pendingStates, completeStates };
const UserSubmissions = userSubmissions.map(submission => {
const startDate = new Date(submission.start_date);
const year = String(startDate.getFullYear()).slice(-2);
const month = String(startDate.getMonth() + 1).padStart(2, '0');
const day = String(startDate.getDate()).padStart(2, '0');

const endDate = new Date(submission.end_date);
const year1 = String(endDate.getFullYear()).slice(-2);
const month1 = String(endDate.getMonth() + 1).padStart(2, '0');
const day1 = String(endDate.getDate()).padStart(2, '0');

const formattedStartDate = `${year}.${month}.${day}`;
const formattedEndDate = `${year1}.${month1}.${day1}`;
return { ...submission, start_date : formattedStartDate, end_date : formattedEndDate };
});
return { UserSubmissions, pendingStates, completeStates };
}
16 changes: 9 additions & 7 deletions domains/admin/admin.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,21 @@ import {

export const createRoomsService = async (body, userId) => {
try {
if (!body.room_image) throw new Error("공지방 생성을 위한 프로필 이미지가 필요합니다.");
const roomInviteUrl = createShortUUID();
const createRoomsData = await createRoomsDao(body, userId, roomInviteUrl);
return createRoomsDTO(createRoomsData);
const roomData = await createRoomsDao(body, userId, roomInviteUrl);
return createRoomsDTO(roomData);
} catch (error) {
console.error("공지방 생성하기 에러:", error);
throw error;
}
};

export const updateRoomsService = async (body) => {
export const updateRoomsService = async (body, roomId) => {
try {
const updateRoomsData = await updateRoomsDao(body);
return updateRoomsDTO(updateRoomsData);
if (!roomId) throw new Error("수정할 공지방의 ID가 필요합니다.");
const { beforeRoomsData } = await updateRoomsDao(body, roomId);
return updateRoomsDTO(beforeRoomsData);
} catch (error) {
console.error("공지방 수정하기 에러:", error);
throw error;
Expand All @@ -49,8 +51,8 @@ export const updateRoomsService = async (body) => {
export const deleteRoomsService = async (body) => {
try {
if (!body) throw new Error("삭제할 방의 ID가 필요합니다.");
const deleteRoomsData = await deleteRoomsDao(body);
return deleteRoomsData;
await deleteRoomsDao(body);
return "공지방 삭제 성공";
} catch (error) {
console.error("공지방 삭제하기 에러:", error);
throw error;
Expand Down
13 changes: 10 additions & 3 deletions domains/admin/admin.sql.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,15 @@ export const userRoomSQL = `
`;

// 공지방 수정
export const beforeUpdateRoomsSQL = `
SELECT room_image, admin_nickname, room_name, room_password, max_penalty
FROM room
WHERE id = ?;
`;

export const updateRoomsSQL = `
UPDATE room SET admin_nickname = ?, room_name = ?, room_password = ?, room_image = ?, max_penalty = ?
UPDATE room
SET room_image = ?, admin_nickname = ?, room_name = ?, room_password = ?, max_penalty = ?
WHERE id = ?;
`;

Expand Down Expand Up @@ -181,7 +188,7 @@ export const getPostCountSQL = `

export const userSubmitSQL = `
SELECT
p.title, p.start_date, p.end_date, p.content, r.room_image
s.id, p.title, p.start_date, p.end_date, p.content, r.room_image
, COUNT(s.id) AS pending_count
FROM post p
JOIN submit s ON p.id = s.post_id AND s.submit_state = 'PENDING'
Expand All @@ -191,7 +198,7 @@ export const userSubmitSQL = `
`;

export const getSubmitStateSQL = `
SELECT u.profile_image, u.nickname, si.URL, s.submit_state
SELECT s.id AS submit_id, u.profile_image, u.nickname, si.URL, s.content, s.submit_state
FROM post p
JOIN submit s ON p.id = s.post_id
JOIN user u ON s.user_id = u.id
Expand Down

0 comments on commit fe63d43

Please sign in to comment.