Skip to content

[BE] 채용공고 북마크 기능 API 구현 #12

Description

@jiva-z

개요

일반 사용자가 채용공고를 북마크할 수 있는 기능을 구현합니다. 사용자는 여러 채용공고를 북마크할 수 있어야 합니다.

작업 내용

1. 북마크 엔티티 생성

  • Bookmark 엔티티 생성
    • bookmarkId: 북마크 ID (PK)
    • user: 사용자 (FK)
    • jobPost: 채용공고 (FK)
    • createdAt: 북마크 생성 시간

2. 북마크 관련 DTO 생성

  • BookmarkRequestDto: 북마크 생성 요청 DTO
  • BookmarkResponseDto: 북마크 응답 DTO
  • BookmarkListResponseDto: 북마크 목록 응답 DTO

3. 북마크 서비스 및 레포지토리 구현

  • BookmarkRepository 인터페이스 생성

    • 사용자별 북마크 목록 조회
    • 북마크 존재 여부 확인
    • 북마크 삭제
  • BookmarkService 인터페이스 및 구현체 생성

    • 북마크 생성
    • 북마크 삭제
    • 사용자별 북마크 목록 조회

4. 북마크 컨트롤러 구현

  • BookmarkController 생성
    • POST /bookmarks: 북마크 생성
    • DELETE /bookmarks/{bookmarkId}: 북마크 삭제
    • GET /bookmarks/my: 내 북마크 목록 조회

API 엔드포인트

북마크 생성

POST /bookmarks
Request Body:
{
    "jobPostId": 1
}
Response:
{
    "bookmarkId": 1,
    "jobPostId": 1,
    "createdAt": "2024-04-21T10:00:00"
}

북마크 삭제

DELETE /bookmarks/{bookmarkId}
Response: 204 No Content

북마크 목록 조회

GET /bookmarks/my
Response:
{
    "bookmarks": [
        {
            "bookmarkId": 1,
            "jobPostId": 1,
            "companyName": "회사명",
            "jobName": "직무명",
            "createdAt": "2024-04-21T10:00:00"
        }
    ]
}

예외 처리

  • 이미 북마크한 채용공고를 다시 북마크하려고 할 때 예외 처리
  • 존재하지 않는 채용공고를 북마크하려고 할 때 예외 처리
  • 다른 사용자의 북마크를 삭제하려고 할 때 예외 처리

테스트

  • 북마크 생성 테스트
  • 북마크 삭제 테스트
  • 북마크 목록 조회 테스트
  • 예외 처리 테스트

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions