diff --git a/src/api/routes/v1/group.ts b/src/api/routes/v1/group.ts index b36f77b..b74bb0c 100644 --- a/src/api/routes/v1/group.ts +++ b/src/api/routes/v1/group.ts @@ -2,7 +2,10 @@ import asyncHandler from "@/api/middlewares/asyncHandler"; import { GroupPostDTO, - GroupPostInputDTO + + GroupPostInputDTO, + GroupPostEmojiDTO, + } from "@/interfaces/GroupPost"; import GroupService from "@/services/group"; @@ -15,7 +18,7 @@ const route = Router(); export default (app: Router) => { app.use("/groups", route); - // 개인 롤링페이퍼 포스트 생성 + // 롤링페이퍼 포스트 생성 route.post( "/posts", asyncHandler(async (req: Request, res: Response) => { @@ -49,13 +52,18 @@ export default (app: Router) => { asyncHandler(async (req: Request, res: Response) => { logger.debug(req.body); const groupServiceInstance = Container.get(GroupService); - const { groupUadatedPostResult} = await groupServiceInstance.updateGroupPost( + + const { groupUpdatedPostResult} = await groupServiceInstance.updateGroupPost( req.body as GroupPostInputDTO, req.body as GroupPostDTO, ); - // ! 수정한 후 디테일 뷰로 이동! + // 포스트 수정을 성공했다면 디테일 뷰 + const { groupPostDetail} = await groupServiceInstance.getDetailGroupPost( + req.body as GroupPostInputDTO, + ); // 수정한 포스트 결과 - return res.status(201).json({ result: groupUadatedPostResult }); + return res.status(201).json({ result: groupUpdatedPostResult, post: groupPostDetail}); + }), ); @@ -72,4 +80,27 @@ export default (app: Router) => { return res.status(200).json({ result: groupDeletedPostResult }); }), ); + + // 그룹 포스트 이모지 수정 + route.put( + "/posts/emoji", + asyncHandler(async (req: Request, res: Response) => { + logger.debug(req.body); + const groupServiceInstance = Container.get(GroupService); + const { groupUpdatedEmojiResult} = await groupServiceInstance.updateEmojiForPost( + req.body as GroupPostInputDTO, + req.body as GroupPostEmojiDTO, + ); + + // 이모지 수정을 성공했다면 디테일 뷰 + const { groupPostDetail} = await groupServiceInstance.getDetailGroupPost( + req.body as GroupPostInputDTO, + ); + + // ! 수정한 후 디테일 뷰로 이동! + // 수정한 포스트 결과 + return res.status(201).json({ result: groupUpdatedEmojiResult , post: groupPostDetail}); + }), + ); + }; diff --git a/src/interfaces/Group.ts b/src/interfaces/Group.ts new file mode 100644 index 0000000..39af929 --- /dev/null +++ b/src/interfaces/Group.ts @@ -0,0 +1,34 @@ + +export interface Group { + groupId: string; + userId: string; + groupName: string; + inviteUrl: string; + +} + +export interface GroupMember{ + groupMemberId: string; + groupId: string; + userId: string; + groupRollingPaperId: string; +} +export interface GroupInputDTO{ + groupId: string; +} + +export interface GroupMemberInputDTO{ + groupMemberId: string; +} + +export interface GroupDTO { + userId: string; + groupName: string; + inviteUrl: string; +} + +export interface GroupMemberDTO{ + groupId: string; + userId: string; + groupRollingPaperId: string; +} \ No newline at end of file diff --git a/src/interfaces/GroupPost.ts b/src/interfaces/GroupPost.ts index f2b422e..b98138f 100644 --- a/src/interfaces/GroupPost.ts +++ b/src/interfaces/GroupPost.ts @@ -26,3 +26,9 @@ export interface GroupPostDTO { anonymousType: AnonymousType | null; postColor: string; } + + +export interface GroupPostEmojiDTO { + emojiType: string | null; +} + diff --git a/src/interfaces/GroupRollingPaper.ts b/src/interfaces/GroupRollingPaper.ts new file mode 100644 index 0000000..700c762 --- /dev/null +++ b/src/interfaces/GroupRollingPaper.ts @@ -0,0 +1,13 @@ +export interface GroupRollingPaper { + groupRollingPaperId: string; + title: string | null; +} + + +export interface GroupRollingPaperInputDTO { + groupRollingPaperId: string; +} + +export interface GroupRollingPaperDTO { + title: string | null; +} diff --git a/src/interfaces/PersonalPost.ts b/src/interfaces/PersonalPost.ts index e079fc6..fe315b7 100644 --- a/src/interfaces/PersonalPost.ts +++ b/src/interfaces/PersonalPost.ts @@ -6,14 +6,14 @@ enum AnonymousType { } export interface PersonalPost { - personal_post_id: string; - personal_rolling_paper_id: string; - user_id: string | null; + personalPostId: string; + personalRollingPaperId: string; + userId: string | null; content: string | null; - anonymous_type: AnonymousType | null; - post_color: string; - emoji_type: string | null; - non_member_password: string | null; + anonymousType: AnonymousType | null; + postColor: string; + emojiType: string | null; + nonMemberPassword: string | null; } export interface PersonalPostInputDTO { @@ -21,10 +21,10 @@ export interface PersonalPostInputDTO { } export interface PersonalPostDTO { - personal_rolling_paper_id: string; - user_id: string | null; + personalRollingPaperId: string; + userId: string | null; content: string | null; - anonymous_type: AnonymousType | null; - post_color: string; - non_member_password: string | null; + anonymousType: AnonymousType | null; + postColor: string; + nonMemberPassword: string | null; } diff --git a/src/services/group.ts b/src/services/group.ts index f5ce66b..679b6c2 100644 --- a/src/services/group.ts +++ b/src/services/group.ts @@ -7,6 +7,9 @@ import { GroupPost, GroupPostInputDTO, GroupPostDTO, + + GroupPostEmojiDTO, + } from "@/interfaces/GroupPost"; import { group } from "console"; @@ -65,13 +68,17 @@ export default class GroupService { public async updateGroupPost( groupPostInputDTO: GroupPostInputDTO, groupPostDTO: GroupPostDTO, - ): Promise<{ groupUadatedPostResult: GroupPost }> { + + ): Promise<{ groupUpdatedPostResult: GroupPost }> { + try { const groupPostId = groupPostInputDTO.groupPostId; // ! 수정한 사람 누구인지 확인 로직 필요, 비로그인 유저면 비밀번호 확인해줘야해! // 이건 로그인 회원 - const groupUadatedPostResult= await this.groupPostModel.update( + + const groupUpdatedPostResult= await this.groupPostModel.update( + { content:groupPostDTO.content, post_color:groupPostDTO.postColor, @@ -81,11 +88,13 @@ export default class GroupService { ); // 비로그인 회원은 필요한 거- 비밀번호 확인 - if (!groupUadatedPostResult) { + + if (groupUpdatedPostResult[0]===0) { throw new Error("Unable to update post"); } - return { groupUadatedPostResult }; + return { groupUpdatedPostResult }; + } catch (error) { this.logger.error(error); throw error; @@ -113,4 +122,32 @@ export default class GroupService { throw error; } } + + +// TODO: 롤링페이퍼 주인만 이모지 수정 가능! + public async updateEmojiForPost( + groupPostInputDTO: GroupPostInputDTO, + groupPostEmojiDTO: GroupPostEmojiDTO, + ): Promise<{ groupUpdatedEmojiResult: GroupPost}> { + try { + const groupPostId = groupPostInputDTO.groupPostId; + + const groupUpdatedEmojiResult= await this.groupPostModel.update( + { + emoji_type : groupPostEmojiDTO.emojiType, + }, + { where: { group_post_id: groupPostId } }, + ); + + if (groupUpdatedEmojiResult[0]=== 0) { + throw new Error("Unable to update emoji for a post"); + } + + return { groupUpdatedEmojiResult}; + } catch (error) { + this.logger.error(error); + throw error; + } + } + }