diff --git a/.idea/jpa-buddy.xml b/.idea/jpa-buddy.xml
new file mode 100644
index 0000000..966d5f5
--- /dev/null
+++ b/.idea/jpa-buddy.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..59780fe
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jumpit/.gitignore b/jumpit/.gitignore
index ed2e7b0..1779025 100644
--- a/jumpit/.gitignore
+++ b/jumpit/.gitignore
@@ -6,6 +6,8 @@ build/
!**/src/test/**/build/
*.yaml
+*.yaml
+
### STS ###
.apt_generated
.classpath
diff --git a/jumpit/src/main/java/org/sopt/jumpit/global/common/dto/message/ErrorMessage.java b/jumpit/src/main/java/org/sopt/jumpit/global/common/dto/message/ErrorMessage.java
index 4a4bf54..10173aa 100644
--- a/jumpit/src/main/java/org/sopt/jumpit/global/common/dto/message/ErrorMessage.java
+++ b/jumpit/src/main/java/org/sopt/jumpit/global/common/dto/message/ErrorMessage.java
@@ -10,7 +10,8 @@ public enum ErrorMessage {
SEARCH_FAILED(HttpStatus.BAD_REQUEST.value(), "[ERROR] 채용 공고 검색에 실패하였습니다."),
INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR.value(), "[ERROR] 서버 내부 오류가 발생하였습니다."),
COMPANY_NOT_FOUND_BY_ID_EXCEPTION(HttpStatus.NOT_FOUND.value(), "[ERROR] ID에 해당하는 기업이 없습니다."),
- SKILL_NOT_FOUND_BY_ID_EXCEPTION(HttpStatus.NOT_FOUND.value(), "[ERROR] ID에 해당하는 기술스택이 없습니다.")
+ SKILL_NOT_FOUND_BY_ID_EXCEPTION(HttpStatus.NOT_FOUND.value(), "[ERROR] ID에 해당하는 기술스택이 없습니다."),
+ USER_NOT_FOUND_BY_ID_EXCEPTION(HttpStatus.NOT_FOUND.value(), "[ERROR] ID에 해당하는 유저를 찾을 수 없습니다.")
;
private final int status;
diff --git a/jumpit/src/main/java/org/sopt/jumpit/resume/controller/ResumeController.java b/jumpit/src/main/java/org/sopt/jumpit/resume/controller/ResumeController.java
new file mode 100644
index 0000000..5504d16
--- /dev/null
+++ b/jumpit/src/main/java/org/sopt/jumpit/resume/controller/ResumeController.java
@@ -0,0 +1,31 @@
+package org.sopt.jumpit.resume.controller;
+
+
+import lombok.RequiredArgsConstructor;
+import org.sopt.jumpit.global.common.dto.SuccessResponse;
+import org.sopt.jumpit.resume.domain.Resume;
+import org.sopt.jumpit.resume.dto.ResumeCreateRequest;
+import org.sopt.jumpit.resume.service.ResumeService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/api/v1/resumes")
+@RequiredArgsConstructor
+public class ResumeController {
+ private final ResumeService resumeService;
+
+ @PostMapping
+ public ResponseEntity createResume (
+ @RequestBody ResumeCreateRequest resumeCreateRequest
+ ) {
+ resumeService.createResume(resumeCreateRequest);
+ return ResponseEntity.ok()
+ .build();
+ }
+
+ @GetMapping("/{userId}")
+ public ResponseEntity findResumeById(@PathVariable Long userId) {
+ return ResponseEntity.ok(resumeService.findResumeById(userId));
+ }
+}
diff --git a/jumpit/src/main/java/org/sopt/jumpit/resume/domain/Resume.java b/jumpit/src/main/java/org/sopt/jumpit/resume/domain/Resume.java
index 6fd34db..64637cf 100644
--- a/jumpit/src/main/java/org/sopt/jumpit/resume/domain/Resume.java
+++ b/jumpit/src/main/java/org/sopt/jumpit/resume/domain/Resume.java
@@ -1,6 +1,8 @@
package org.sopt.jumpit.resume.domain;
import jakarta.persistence.*;
+import lombok.Builder;
+import org.sopt.jumpit.resume.dto.ResumeCreateRequest;
import org.sopt.jumpit.user.domain.User;
import java.time.LocalDateTime;
@@ -28,4 +30,17 @@ public class Resume {
@Column(name = "createdAt")
private LocalDateTime createdAt;
+ @Builder
+ private Resume(User owner, String title) {
+ this.owner = owner;
+ this.title = title;
+ this.isPrivate = false;
+ }
+
+ public static Resume create(User owner, String title) {
+ return Resume.builder()
+ .title(title)
+ .owner(owner)
+ .build();
+ }
}
diff --git a/jumpit/src/main/java/org/sopt/jumpit/resume/dto/Resume.java b/jumpit/src/main/java/org/sopt/jumpit/resume/dto/Resume.java
new file mode 100644
index 0000000..217e799
--- /dev/null
+++ b/jumpit/src/main/java/org/sopt/jumpit/resume/dto/Resume.java
@@ -0,0 +1,12 @@
+package org.sopt.jumpit.resume.dto;
+
+import java.time.LocalDateTime;
+
+public record Resume(
+ Long id,
+ String title,
+ Boolean isPrivate,
+ LocalDateTime createdAt,
+ LocalDateTime modifiedAt
+) {
+}
diff --git a/jumpit/src/main/java/org/sopt/jumpit/resume/dto/ResumeCreateRequest.java b/jumpit/src/main/java/org/sopt/jumpit/resume/dto/ResumeCreateRequest.java
new file mode 100644
index 0000000..a6d3cc7
--- /dev/null
+++ b/jumpit/src/main/java/org/sopt/jumpit/resume/dto/ResumeCreateRequest.java
@@ -0,0 +1,7 @@
+package org.sopt.jumpit.resume.dto;
+
+public record ResumeCreateRequest(
+ String title,
+ Long userId
+) {
+}
diff --git a/jumpit/src/main/java/org/sopt/jumpit/resume/dto/ResumeSearchResponse.java b/jumpit/src/main/java/org/sopt/jumpit/resume/dto/ResumeSearchResponse.java
new file mode 100644
index 0000000..6a0162a
--- /dev/null
+++ b/jumpit/src/main/java/org/sopt/jumpit/resume/dto/ResumeSearchResponse.java
@@ -0,0 +1,9 @@
+package org.sopt.jumpit.resume.dto;
+
+public record ResumeSearchResponse(
+ Long userId,
+ Resume resume
+) {
+
+
+}
diff --git a/jumpit/src/main/java/org/sopt/jumpit/resume/service/ResumeService.java b/jumpit/src/main/java/org/sopt/jumpit/resume/service/ResumeService.java
new file mode 100644
index 0000000..2e57d09
--- /dev/null
+++ b/jumpit/src/main/java/org/sopt/jumpit/resume/service/ResumeService.java
@@ -0,0 +1,37 @@
+package org.sopt.jumpit.resume.service;
+
+import jakarta.transaction.Transactional;
+import lombok.RequiredArgsConstructor;
+import org.sopt.jumpit.global.common.dto.message.ErrorMessage;
+import org.sopt.jumpit.global.exception.BusinessException;
+import org.sopt.jumpit.resume.domain.Resume;
+import org.sopt.jumpit.resume.dto.ResumeCreateRequest;
+import org.sopt.jumpit.resume.dto.ResumeSearchResponse;
+import org.sopt.jumpit.resume.repository.ResumeRepository;
+import org.sopt.jumpit.user.domain.User;
+import org.sopt.jumpit.user.repository.UserRepository;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class ResumeService {
+ private final ResumeRepository resumeRepository;
+ private final UserRepository userRepository;
+
+ @Transactional
+ public void createResume(
+ ResumeCreateRequest resumeCreateRequest
+ ) {
+ User findUser = userRepository.findById(resumeCreateRequest.userId()).orElseThrow(
+ () -> new BusinessException(ErrorMessage.USER_NOT_FOUND_BY_ID_EXCEPTION)
+ );
+ Resume resume = Resume.create(findUser, "내 이력서");
+ resumeRepository.save(resume);
+ }
+
+ public Resume findResumeById(Long resumeId) {
+ return resumeRepository.findById(resumeId).orElseThrow(
+ () -> new BusinessException(ErrorMessage.USER_NOT_FOUND_BY_ID_EXCEPTION)
+ );
+ }
+}