-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #92 from Stumeet/STMT-200-study_group
✨ [STMT-200] 스터디 도메인 구현
- Loading branch information
Showing
24 changed files
with
606 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
30 changes: 30 additions & 0 deletions
30
src/main/java/com/stumeet/server/study/adapter/in/web/StudyQueryApi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package com.stumeet.server.study.adapter.in.web; | ||
|
||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.PathVariable; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
|
||
import com.stumeet.server.common.annotation.WebAdapter; | ||
import com.stumeet.server.common.model.ApiResponse; | ||
import com.stumeet.server.common.response.SuccessCode; | ||
import com.stumeet.server.study.adapter.in.web.response.StudyDetailResponse; | ||
import com.stumeet.server.study.application.port.in.StudyQueryUseCase; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
|
||
@WebAdapter | ||
@RequestMapping("/api/v1/studies") | ||
@RequiredArgsConstructor | ||
public class StudyQueryApi { | ||
|
||
private final StudyQueryUseCase studyQueryUseCase; | ||
|
||
@GetMapping("/{id}") | ||
public ResponseEntity<ApiResponse<StudyDetailResponse>> getStudy( | ||
@PathVariable(name = "id") Long id | ||
) { | ||
StudyDetailResponse response = studyQueryUseCase.getStudyDetailById(id); | ||
return ResponseEntity.ok(ApiResponse.success(SuccessCode.GET_SUCCESS, response)); | ||
} | ||
} |
24 changes: 24 additions & 0 deletions
24
src/main/java/com/stumeet/server/study/adapter/in/web/response/StudyDetailResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package com.stumeet.server.study.adapter.in.web.response; | ||
|
||
import java.time.LocalDateTime; | ||
import java.util.List; | ||
|
||
import lombok.Builder; | ||
|
||
@Builder | ||
public record StudyDetailResponse( | ||
Long id, | ||
String field, | ||
String name, | ||
List<String> topics, | ||
String intro, | ||
String region, | ||
String rule, | ||
String mainImage, | ||
int headCount, | ||
LocalDateTime startDate, | ||
LocalDateTime endDate, | ||
boolean isFinished, | ||
boolean isDeleted | ||
) { | ||
} |
8 changes: 8 additions & 0 deletions
8
src/main/java/com/stumeet/server/study/adapter/out/persistance/JpaStudyRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package com.stumeet.server.study.adapter.out.persistance; | ||
|
||
import org.springframework.data.jpa.repository.JpaRepository; | ||
|
||
import com.stumeet.server.study.adapter.out.persistance.entity.StudyJpaEntity; | ||
|
||
public interface JpaStudyRepository extends JpaRepository<StudyJpaEntity, Long> { | ||
} |
23 changes: 23 additions & 0 deletions
23
src/main/java/com/stumeet/server/study/adapter/out/persistance/StudyPersistenceAdapter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package com.stumeet.server.study.adapter.out.persistance; | ||
|
||
import com.stumeet.server.common.annotation.PersistenceAdapter; | ||
import com.stumeet.server.study.adapter.out.persistance.entity.StudyJpaEntity; | ||
import com.stumeet.server.study.adapter.out.persistance.mapper.StudyPersistenceMapper; | ||
import com.stumeet.server.study.application.port.out.StudyQueryPort; | ||
import com.stumeet.server.study.domain.Study; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
|
||
@PersistenceAdapter | ||
@RequiredArgsConstructor | ||
public class StudyPersistenceAdapter implements StudyQueryPort { | ||
|
||
private final StudyRepository studyRepository; | ||
private final StudyPersistenceMapper studyPersistenceMapper; | ||
|
||
@Override | ||
public Study getById(Long id) { | ||
StudyJpaEntity entity = studyRepository.findById(id); | ||
return studyPersistenceMapper.toDomain(entity); | ||
} | ||
} |
9 changes: 9 additions & 0 deletions
9
src/main/java/com/stumeet/server/study/adapter/out/persistance/StudyRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package com.stumeet.server.study.adapter.out.persistance; | ||
|
||
import com.stumeet.server.study.adapter.out.persistance.entity.StudyJpaEntity; | ||
|
||
public interface StudyRepository { | ||
|
||
StudyJpaEntity findById(Long id); | ||
|
||
} |
22 changes: 22 additions & 0 deletions
22
src/main/java/com/stumeet/server/study/adapter/out/persistance/StudyRepositoryImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package com.stumeet.server.study.adapter.out.persistance; | ||
|
||
import org.springframework.stereotype.Repository; | ||
|
||
import com.stumeet.server.common.exception.model.BusinessException; | ||
import com.stumeet.server.common.response.ErrorCode; | ||
import com.stumeet.server.study.adapter.out.persistance.entity.StudyJpaEntity; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
|
||
@Repository | ||
@RequiredArgsConstructor | ||
public class StudyRepositoryImpl implements StudyRepository { | ||
|
||
private final JpaStudyRepository jpaStudyRepository; | ||
|
||
@Override | ||
public StudyJpaEntity findById(Long id) { | ||
return jpaStudyRepository.findById(id) | ||
.orElseThrow(() -> new BusinessException(ErrorCode.STUDY_NOT_FOUND)); | ||
} | ||
} |
33 changes: 33 additions & 0 deletions
33
...ain/java/com/stumeet/server/study/adapter/out/persistance/entity/StudyFieldJpaEntity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package com.stumeet.server.study.adapter.out.persistance.entity; | ||
|
||
import org.hibernate.annotations.Comment; | ||
|
||
import jakarta.persistence.Column; | ||
import jakarta.persistence.Entity; | ||
import jakarta.persistence.GeneratedValue; | ||
import jakarta.persistence.GenerationType; | ||
import jakarta.persistence.Id; | ||
import jakarta.persistence.Table; | ||
import lombok.AccessLevel; | ||
import lombok.AllArgsConstructor; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
|
||
@Entity | ||
@Table(name = "study_field") | ||
@Getter | ||
@Builder | ||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
@AllArgsConstructor(access = AccessLevel.PRIVATE) | ||
public class StudyFieldJpaEntity { | ||
|
||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
@Comment("스터디 분야 아이디") | ||
private Long id; | ||
|
||
@Column(name = "name", length = 20) | ||
@Comment("분야명") | ||
private String name; | ||
} |
100 changes: 100 additions & 0 deletions
100
src/main/java/com/stumeet/server/study/adapter/out/persistance/entity/StudyJpaEntity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
package com.stumeet.server.study.adapter.out.persistance.entity; | ||
|
||
import java.time.LocalDateTime; | ||
|
||
import org.hibernate.annotations.ColumnDefault; | ||
import org.hibernate.annotations.Comment; | ||
|
||
import com.stumeet.server.common.model.BaseTimeEntity; | ||
|
||
import jakarta.persistence.Column; | ||
import jakarta.persistence.Entity; | ||
import jakarta.persistence.GeneratedValue; | ||
import jakarta.persistence.GenerationType; | ||
import jakarta.persistence.Id; | ||
import jakarta.persistence.JoinColumn; | ||
import jakarta.persistence.ManyToOne; | ||
import jakarta.persistence.Table; | ||
import lombok.AccessLevel; | ||
import lombok.AllArgsConstructor; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
|
||
@Entity | ||
@Table(name = "study") | ||
@Getter | ||
@Builder | ||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
@AllArgsConstructor(access = AccessLevel.PRIVATE) | ||
public class StudyJpaEntity extends BaseTimeEntity { | ||
|
||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
@Comment("스터디 그룹 아이디") | ||
private Long id; | ||
|
||
@ManyToOne | ||
@JoinColumn(name = "study_field_id", nullable = false) | ||
@Comment("분야") | ||
private StudyFieldJpaEntity studyField; | ||
|
||
@Column(name = "name", length = 20, nullable = false) | ||
@Comment("스터디명") | ||
private String name; | ||
|
||
@Column(name = "topics") | ||
@Comment("주제") | ||
private String topics; | ||
|
||
@Column(name = "intro", length = 100, nullable = false) | ||
@Comment("소개") | ||
private String intro; | ||
|
||
@Column(name = "region", length = 50, nullable = false) | ||
@Comment("지역") | ||
private String region; | ||
|
||
@Column(name = "rule", length = 100) | ||
@Comment("규칙") | ||
private String rule; | ||
|
||
@Column(name = "main_image", length = 500) | ||
@Comment("메인 이미지") | ||
private String mainImage; | ||
|
||
@Column(name = "head_count", length = 100, nullable = false) | ||
@ColumnDefault("1") | ||
@Comment("현재 인원") | ||
private int headCount; | ||
|
||
@Column(name = "start_date", nullable = false) | ||
@Comment("시작일") | ||
private LocalDateTime startDate; | ||
|
||
@Column(name = "end_date", nullable = false) | ||
@Comment("종료일") | ||
private LocalDateTime endDate; | ||
|
||
@Column(name = "is_finished", nullable = false) | ||
@ColumnDefault("false") | ||
@Comment("완료 여부") | ||
private boolean isFinished; | ||
|
||
@Column(name = "is_deleted", nullable = false) | ||
@ColumnDefault("false") | ||
@Comment("삭제 여부") | ||
private boolean isDeleted; | ||
|
||
@Column(name = "deleted_at") | ||
@Comment("삭제된 시간") | ||
private LocalDateTime deletedAt; | ||
|
||
public Boolean getIsFinished() { | ||
return this.isFinished; | ||
} | ||
|
||
public Boolean getIsDeleted() { | ||
return this.isDeleted; | ||
} | ||
} |
24 changes: 24 additions & 0 deletions
24
.../com/stumeet/server/study/adapter/out/persistance/mapper/StudyFieldPersistenceMapper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package com.stumeet.server.study.adapter.out.persistance.mapper; | ||
|
||
import org.springframework.stereotype.Component; | ||
|
||
import com.stumeet.server.study.adapter.out.persistance.entity.StudyFieldJpaEntity; | ||
import com.stumeet.server.study.domain.StudyField; | ||
|
||
@Component | ||
public class StudyFieldPersistenceMapper { | ||
|
||
public StudyFieldJpaEntity toEntity(StudyField domain) { | ||
return StudyFieldJpaEntity.builder() | ||
.id(domain.getId()) | ||
.name(domain.getName()) | ||
.build(); | ||
} | ||
|
||
public StudyField toDomain(StudyFieldJpaEntity entity) { | ||
return StudyField.builder() | ||
.id(entity.getId()) | ||
.name(entity.getName()) | ||
.build(); | ||
} | ||
} |
Oops, something went wrong.