diff --git a/package.json b/package.json index 5e77dd1..ef6d3cd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@oz-adv/backend", - "version": "0.0.2 (2024-11-28.003)", + "version": "0.0.2 (2024-11-28.004)", "description": "Backend for the Oz-Adv project", "type": "module", "scripts": { diff --git a/src/api.mts b/src/api.mts index da73425..2b8c1b4 100644 --- a/src/api.mts +++ b/src/api.mts @@ -36,6 +36,7 @@ export class Api extends HttpApi.empty OpenApi.annotations({ title: '오즈 6기 심화반 챌린지 서비스를 위한 백엔드', description: `최신변경점: +* 게시글 삭제처리 softDelete로 변경 (2024-11-28.004) * 챌린지 태그연결 api 위치변경: tag -> challenge (2024-11-28.003) * 게시글 태그연결 api 위치변경: tag -> post (2024-11-28.003) * 챌린지 태그조회 api 위치변경: tag -> challenge (2024-11-28.002) diff --git a/src/challenge/challenge-api.mts b/src/challenge/challenge-api.mts index f36e1e3..eda9152 100644 --- a/src/challenge/challenge-api.mts +++ b/src/challenge/challenge-api.mts @@ -152,7 +152,6 @@ export class ChallengeApi extends HttpApiGroup.make('challenge') * 삭제처리를 취소하기 위해서는 update로 처리해야합니다. -* 프론트엔드에서 삭제되었음을 알려야합니다. `, override: { summary: '(사용가능) 챌린지 삭제', diff --git a/src/post/post-api.mts b/src/post/post-api.mts index de23f90..09f21f5 100644 --- a/src/post/post-api.mts +++ b/src/post/post-api.mts @@ -254,8 +254,11 @@ export class PostApi extends HttpApiGroup.make('post') .addError(Unauthorized) .annotateContext( OpenApi.annotations({ - description: - '게시글을 삭제합니다. 게시글이 존재하지 않는 경우 404를 반환합니다. 작성자와 현재 사용자가 다른 경우 403을 반환합니다. 작성자와 어드민만 삭제할 수 있습니다.', + description: `게시글을 삭제합니다. 게시글이 존재하지 않는 경우 404를 반환합니다. 작성자와 현재 사용자가 다른 경우 403을 반환합니다. 작성자와 어드민만 삭제할 수 있습니다. +* Row가 삭제되는것이 아니라, isDeleted 필드를 true로 변경합니다. + +* 삭제처리를 취소하기 위해서는 update로 처리해야합니다. +`, override: { summary: '(사용가능) 게시글 삭제', }, diff --git a/src/post/post-service.mts b/src/post/post-service.mts index ad6757a..829bda1 100644 --- a/src/post/post-service.mts +++ b/src/post/post-service.mts @@ -66,7 +66,11 @@ const make = Effect.gen(function* () { const deleteById = (postId: PostId) => postRepo.with(postId, (post) => pipe( - postRepo.delete(postId), + postRepo.update({ + ...post, + isDeleted: true, + updatedAt: undefined, + }), Effect.withSpan('PostService.deleteById'), policyRequire('post', 'delete'), ),