Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
160 commits
Select commit Hold shift + click to select a range
07f4f86
refactor(Item): GetItemQuery
GSB0203 Nov 16, 2024
02419ab
refactor(Item): LoadItemPort
GSB0203 Nov 16, 2024
dcd161d
refactor(Item): SpringDataItemRepository
GSB0203 Nov 16, 2024
8d43dc0
refactor(Item): ItemJpaEntity
GSB0203 Nov 16, 2024
5f54950
refactor(Item): Item
GSB0203 Nov 16, 2024
b0e0f69
refactor(Item): ItemGetAdapter
GSB0203 Nov 16, 2024
a17df18
feat(architecture): UseCase
GSB0203 Nov 16, 2024
c879553
feat(architecture): WebAdapter
GSB0203 Nov 16, 2024
e86c37c
feat(architecture): PersistenceAdapter
GSB0203 Nov 16, 2024
7ae6e5f
refactor(Item): GetItemService
GSB0203 Nov 16, 2024
1cf31cf
feat(Item): ItemMapper
GSB0203 Nov 16, 2024
e8558ac
refactor(Item): ItemController
GSB0203 Nov 16, 2024
e479113
refactor(Item): GetItemsQuery
GSB0203 Nov 16, 2024
fe73ac2
refactor(Item): LoadItemsPort
GSB0203 Nov 16, 2024
439fc37
refactor(Item): ItemsGetAdapter
GSB0203 Nov 16, 2024
5dfc6e9
refactor(Item): GetItemsService
GSB0203 Nov 16, 2024
898dc7e
refactor(Item): GetItemsByCategoryQuery
GSB0203 Nov 16, 2024
13cc57c
refactor(Item): LoadItemsByCategoryPort
GSB0203 Nov 16, 2024
d48d950
refactor(Item): ItemByCategoryGetAdapter
GSB0203 Nov 16, 2024
ea6ab90
refactor(Item): GetItemsByCategoryService
GSB0203 Nov 16, 2024
e80cd1e
refactor(Item): CategoryConverter
GSB0203 Nov 16, 2024
283d567
remove(Item): ItemController
GSB0203 Nov 16, 2024
9af8c1c
remove(Item): ItemCreator
GSB0203 Nov 16, 2024
4b32e90
remove(Item): ItemDeleter
GSB0203 Nov 16, 2024
91917b9
remove(Item): ItemReader
GSB0203 Nov 16, 2024
65a43a4
remove(Item): ItemRepository
GSB0203 Nov 16, 2024
28e6f9a
remove(Item): ItemResponse
GSB0203 Nov 16, 2024
33460f7
remove(Item): CommandItemService
GSB0203 Nov 16, 2024
af70721
remove(Item): ItemUpdater
GSB0203 Nov 16, 2024
4d300b5
refactor(Item): InventoryJpaEntity
GSB0203 Nov 17, 2024
c000eef
refactor(Inventory): Inventory
GSB0203 Nov 17, 2024
9dd89aa
refactor(Inventory): InventoryRepository
GSB0203 Nov 17, 2024
bc6f647
refactor(Item): BuyItemUseCase
GSB0203 Nov 17, 2024
b66ac1a
refactor(Item): BuyItemPort
GSB0203 Nov 17, 2024
4732da0
refactor(Item): BuyItemService
GSB0203 Nov 17, 2024
92c1d88
refactor(Item): BuyItemAdapter
GSB0203 Nov 17, 2024
275b508
refactor(Inventory): EquipInventoryUseCase
GSB0203 Nov 17, 2024
52276ab
refactor(Inventory): EquipInventoryPort
GSB0203 Nov 17, 2024
e09097a
refactor(Inventory): GetInventoriesByIsEquippedQuery
GSB0203 Nov 17, 2024
d89b47b
refactor(Inventory): LoadInventoriesByIsEquippedPort
GSB0203 Nov 17, 2024
a7077cb
refactor(Inventory): GetInventoriesByIsEquippedService
GSB0203 Nov 17, 2024
092081d
refactor(Inventory): InventoriesByIsEquippedGetAdapter
GSB0203 Nov 17, 2024
b4eddcb
refactor(Inventory): GetInventoriesQuery
GSB0203 Nov 17, 2024
ac4fe72
refactor(Inventory): LoadInventoriesPort
GSB0203 Nov 17, 2024
92a9f10
refactor(Inventory): GetInventoriesService
GSB0203 Nov 17, 2024
493a67c
refactor(Inventory): InventoriesGetAdapter
GSB0203 Nov 17, 2024
7641e4c
refactor(Inventory): EquipInventoryService
GSB0203 Nov 17, 2024
a8039fe
feat(Inventory): InventoryMapper
GSB0203 Nov 17, 2024
8f71684
refactor(Inventory): LoadInventoryPort
GSB0203 Nov 17, 2024
a9d9c1c
refactor(Inventory): InventoryGetAdapter
GSB0203 Nov 17, 2024
978d644
refactor(Inventory): CreateInventoryPort
GSB0203 Nov 17, 2024
ef6a8c9
refactor(Inventory): CreateInventoryAdapter
GSB0203 Nov 17, 2024
099c872
refactor(Item): Item
GSB0203 Nov 17, 2024
e28f094
refactor(Item): ItemJpaEntity
GSB0203 Nov 17, 2024
b982aab
feat(Item): ItemMapper
GSB0203 Nov 17, 2024
bcc0f4e
refactor(Item): ItemsGetAdapter
GSB0203 Nov 17, 2024
0c3c92c
refactor(Item): QueryItemService
GSB0203 Nov 17, 2024
ea1c010
refactor(Item): ItemGetAdapter
GSB0203 Nov 17, 2024
10eaeb2
refactor(Item): ItemByCategoryGetAdapter
GSB0203 Nov 17, 2024
8cc9e11
refactor(Item): ItemController
GSB0203 Nov 17, 2024
e6ffbc0
refactor(Inventory): CheckHaveItemPort
GSB0203 Nov 17, 2024
49f2e54
refactor(Inventory): CheckHaveItemAdapter
GSB0203 Nov 17, 2024
da4b590
refactor(Inventory): CheckHaveItemAdapter
GSB0203 Nov 17, 2024
ca22b7a
remove(Inventory): CreateInventoryAdapter
GSB0203 Nov 17, 2024
eeeb264
refactor(Inventory): EquipInventoryService
GSB0203 Nov 17, 2024
baffadb
remove(Inventory): InventoriesByIsEquippedGetAdapter
GSB0203 Nov 17, 2024
a74bc78
refactor(Inventory): InventoryRepository
GSB0203 Nov 17, 2024
e4bfe86
remove(Inventory): LoadInventoryPort
GSB0203 Nov 17, 2024
811f3d3
refactor(User): UserJoiner
GSB0203 Nov 17, 2024
8ee41b7
fix(User): EquipInventoryService
GSB0203 Nov 17, 2024
b6aeb95
fix(Inventory): EquipInventoryService
GSB0203 Nov 17, 2024
fca6acf
Merge branch 'refactor/#125' of https://github.com/SPACE-FOR-SPACE/SP…
GSB0203 Nov 17, 2024
06e3c45
Merge branch 'master' into refactor/#125
GSB0203 Nov 17, 2024
0ca4dff
remove(Item): ItemRepository
GSB0203 Nov 17, 2024
bd19b26
fix(Inventory): EquipInventoryService
GSB0203 Nov 17, 2024
0a128e9
fix(Inventory): EquipInventoryUseCase
GSB0203 Nov 17, 2024
48b9187
fix(Inventory): InventoryController
GSB0203 Nov 17, 2024
861260b
remove(Inventory): CreateInventoryAdapter
GSB0203 Nov 17, 2024
f87eea3
refactor(Item): GetItemsByCategoryQuery
GSB0203 Nov 17, 2024
74383b7
refactor(Item): GetItemsByCategoryService
GSB0203 Nov 17, 2024
78a4379
fix(Inventory): InventoryJpaEntity
GSB0203 Nov 17, 2024
d800705
fix(Item): ItemJpaEntity
GSB0203 Nov 17, 2024
d46d6f6
refactor(Item): ItemController
GSB0203 Nov 17, 2024
2c2b25d
Merge branch 'master' into refactor/#125
GSB0203 Nov 17, 2024
181076a
refactor(annotation): annotation
GSB0203 Nov 18, 2024
bf7c43d
feat(Item): ItemController
GSB0203 Nov 18, 2024
ce448d1
refactor(Item): ItemController
GSB0203 Nov 18, 2024
f09bc05
feat(Inventory): InventoryController
GSB0203 Nov 18, 2024
ad4d127
refactor(Checklist): ChecklistJpaEntity
GSB0203 Nov 18, 2024
f974dae
refactor(Checklist): ChecklistJpaEntity
GSB0203 Nov 18, 2024
228dfc2
refactor(Checklist): ChecklistRepository
GSB0203 Nov 18, 2024
f9b4ad4
refactor(Checklist): GetChecklistsQuery
GSB0203 Nov 18, 2024
3f1a3ef
refactor(Checklist): GetChecklistsByQuizService
GSB0203 Nov 18, 2024
8f605f7
refactor(Checklist): LoadChecklistsByQuizPort
GSB0203 Nov 18, 2024
4a85ba2
refactor(Checklist): ChecklistsByQuizGetAdapter
GSB0203 Nov 18, 2024
733caa7
refactor(Checklist): ChecklistMapper
GSB0203 Nov 18, 2024
e13919e
refactor(Chat): CommandChatService
GSB0203 Nov 18, 2024
3cc2206
remove(Inventory): InventoryMapper
GSB0203 Nov 18, 2024
c4d93e6
refactor(Inventory): LoadEquippedInventoryByCategoryPort
GSB0203 Nov 18, 2024
b9873ac
refactor(Inventory): EquippedInventoryByCategoryGetAdapter
GSB0203 Nov 18, 2024
791e97d
remove(Inventory): EquipInventoryPort
GSB0203 Nov 18, 2024
9e2a88f
remove(Inventory): EquipInventoryAdapter
GSB0203 Nov 18, 2024
fa0c7fb
refactor(Inventory): EquipInventoryService
GSB0203 Nov 18, 2024
3f34e2f
fix(Item): Item
GSB0203 Nov 19, 2024
4ca28f1
fix(Item): ItemMapper
GSB0203 Nov 19, 2024
6f3293d
fix(Inventory): InventoryResponse
GSB0203 Nov 19, 2024
c6e1b0f
refactor(Chapter): Chapter
GSB0203 Nov 19, 2024
c2ac8a7
refactor(Chapter): Chapter
GSB0203 Nov 19, 2024
05b98e1
refactor(Chapter): ChapterRepository
GSB0203 Nov 19, 2024
2a66048
refactor(Chapter): GetChapterQuery
GSB0203 Nov 19, 2024
2c0089e
refactor(Chapter): GetChapterService
GSB0203 Nov 19, 2024
863bc68
refactor(Chapter): LoadChapterPort
GSB0203 Nov 19, 2024
1826b89
refactor(Chapter): ChapterGetAdapter
GSB0203 Nov 19, 2024
4c557df
refactor(Chapter): ChapterMapper
GSB0203 Nov 19, 2024
fdde470
refactor(Chapter): ChapterResponse
GSB0203 Nov 19, 2024
19b6a7f
refactor(Chapter): ChapterCreator
GSB0203 Nov 19, 2024
bd8c105
refactor(Chapter): ChapterDeleter
GSB0203 Nov 19, 2024
e3003fd
refactor(Chapter): ChapterReader
GSB0203 Nov 19, 2024
b88b444
refactor(Chapter): ChapterUpdater
GSB0203 Nov 19, 2024
28d2316
refactor(Chapter): CommandChapterService
GSB0203 Nov 19, 2024
44a57b9
refactor(Chapter): QueryChapterService
GSB0203 Nov 19, 2024
0112ef5
refactor(Chapter): ChapterRepository
GSB0203 Nov 19, 2024
e091fed
rename(Quiz): QuizResponse
GSB0203 Nov 19, 2024
9652583
fix(Checklist): ChecklistResponse
GSB0203 Nov 19, 2024
764d06d
fix(Chat): CommandQuizService
GSB0203 Nov 19, 2024
e8411e6
fix(Chat): InventoriesGetAdapter
GSB0203 Nov 19, 2024
a77fbcc
refactor(Chapter): ChapterController
GSB0203 Nov 19, 2024
219a1ed
refactor(Chapter): ChapterJpaEntity
GSB0203 Nov 19, 2024
260465b
refactor(Item): ItemsGetAdapter
GSB0203 Nov 19, 2024
1c09adf
refactor(Item): ChecklistMapper
GSB0203 Nov 19, 2024
76161df
refactor(Checklist): ChecklistJpaEntity
GSB0203 Nov 19, 2024
3d793b4
refactor(Chat): CommandChatService
GSB0203 Nov 19, 2024
c4e928c
refactor(Chapter): GetChaptersQuery
GSB0203 Nov 20, 2024
61937ae
refactor(Chapter): GetChaptersQuery
GSB0203 Nov 20, 2024
64cabdf
refactor(Chapter): GetChaptersQuery
GSB0203 Nov 20, 2024
76e8991
refactor(Chapter): ChaptersGetAdapter
GSB0203 Nov 20, 2024
af77cc2
refactor(Chapter): ChapterController
GSB0203 Nov 20, 2024
0c9c8c2
feat(Chapter): ChapterMapper
GSB0203 Nov 20, 2024
d9f1f59
refactor(Quiz): Quiz
GSB0203 Nov 20, 2024
496d7f5
refactor(Quiz): QuizJpaEntity
GSB0203 Nov 20, 2024
3020d4b
feat(Quiz): QuizMapper
GSB0203 Nov 20, 2024
9ab377e
refactor(Quiz): GetQuizQuery
GSB0203 Nov 20, 2024
c1c9e55
refactor(Quiz): LoadQuizPort
GSB0203 Nov 20, 2024
4a00404
Revert "refactor(Quiz): LoadQuizPort"
GSB0203 Nov 20, 2024
0336be1
refactor(Quiz): LoadQuizPort
GSB0203 Nov 20, 2024
805e16b
refactor(Quiz): GetQuizService
GSB0203 Nov 20, 2024
a4fe274
refactor(Quiz): GetQuizzesByChapterQuery
GSB0203 Nov 20, 2024
8d72dba
refactor(Quiz): LoadQuizzesByChapterPort
GSB0203 Nov 20, 2024
fc8ccb9
refactor(Quiz): QuizGetAdapter
GSB0203 Nov 20, 2024
20238fb
refactor(Quiz): QuizzesByChapterGetAdapter
GSB0203 Nov 20, 2024
9a4110e
refactor(Quiz): GetQuizzesByChapterService
GSB0203 Nov 20, 2024
1aba722
refactor(Checklist): ChecklistJpaEntity
GSB0203 Nov 20, 2024
d0211c2
refactor(Checklist): ChecklistMapper
GSB0203 Nov 20, 2024
c3f4654
refactor(Checklist): ChecklistRepository
GSB0203 Nov 20, 2024
1b789a4
refactor(Checklist): ChecklistResponse
GSB0203 Nov 20, 2024
7f2490c
refactor(Checklist): ChecklistsByQuizGetAdapter
GSB0203 Nov 20, 2024
c7d14e8
refactor(Chat): CommandChatService
GSB0203 Nov 20, 2024
9b0b870
refactor(Chat): QueryChatService
GSB0203 Nov 20, 2024
31606d2
refactor(State): State
GSB0203 Nov 20, 2024
c6c22ba
refactor(State): StateResponse
GSB0203 Nov 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.space.server.common.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Component;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface PersistenceAdapter {

@AliasFor(annotation = Component.class)
String value() default "";

}
22 changes: 22 additions & 0 deletions src/main/java/com/space/server/common/annotation/UseCase.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.space.server.common.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Component;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface UseCase {

@AliasFor(annotation = Component.class)
String value() default "";

}

21 changes: 21 additions & 0 deletions src/main/java/com/space/server/common/annotation/WebAdapter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.space.server.common.annotation;

import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Component;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface WebAdapter {

@AliasFor(annotation = Component.class)
String value() default "";

}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.space.server.domain.auth.service.implementation;

import com.space.server.domain.inventory.adapter.out.persistence.EquipInventoryAdapter;
import com.space.server.domain.inventory.application.port.out.CreateInventoryPort;
import com.space.server.domain.auth.presentation.dto.request.JoinUserRequest;
import com.space.server.domain.inventory.domain.Inventory;
import com.space.server.domain.inventory.service.implementation.InventoryCreator;
import com.space.server.domain.inventory.service.implementation.InventoryUpdater;
import com.space.server.domain.item.application.port.in.GetItemQuery;
import com.space.server.domain.item.domain.Item;
import com.space.server.domain.item.service.implementation.ItemReader;
import com.space.server.domain.mail.exception.EmailNotVerifiedException;
import com.space.server.domain.mail.service.EmailTokenService;
import com.space.server.domain.user.domain.Users;
Expand All @@ -23,9 +23,9 @@ public class UserJoiner {

private final UserRepository userRepository;
private final BCryptPasswordEncoder passwordEncoder;
private final InventoryCreator inventoryCreator;
private final InventoryUpdater inventoryUpdater;
private final ItemReader itemReader;
private final CreateInventoryPort createInventoryPort;
private final GetItemQuery getItemQuery;
private final EquipInventoryAdapter equipInventoryAdapter;
private final EmailTokenService emailTokenService;

@Transactional
Expand Down Expand Up @@ -55,16 +55,13 @@ public void joinProcess(JoinUserRequest joinUserRequest) {

userRepository.save(user);

Item head = itemReader.findById(1L);
Item theme = itemReader.findById(2L);
Item head = getItemQuery.getItem(1L);
Item theme = getItemQuery.getItem(2L);

Inventory In_head = new Inventory(head, user);
Inventory In_theme = new Inventory(theme, user);
Inventory In_head = createInventoryPort.create(head, user);
Inventory In_theme = createInventoryPort.create(theme, user);

inventoryCreator.create(In_head);
inventoryCreator.create(In_theme);

inventoryUpdater.equip(In_head);
inventoryUpdater.equip(In_theme);
equipInventoryAdapter.equipInventory(In_head);
equipInventoryAdapter.equipInventory(In_theme);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.space.server.domain.chapter.presentation;
package com.space.server.domain.chapter.adapter.in.web;

import com.space.server.domain.chapter.presentation.dto.response.ChapterResponse;
import com.space.server.domain.chapter.service.QueryChapterService;
import com.space.server.domain.chapter.adapter.in.web.dto.response.ChapterResponse;
import com.space.server.domain.chapter.application.port.in.GetChapterQuery;
import com.space.server.domain.chapter.application.port.in.GetChaptersQuery;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
Expand All @@ -16,19 +17,19 @@
@Tag(name = "Chapter", description = "챕터 API")
public class ChapterController {

private final QueryChapterService queryChapterService;
private final GetChaptersQuery getChaptersQuery;
private final GetChapterQuery getChapterQuery;

@GetMapping("{chapter-id}")
@Operation(summary = "챕터 조회", description = "해당 챕터를 조회합니다.")
public ChapterResponse readOne(
@Parameter(description = "챕터 ID", required = true) @PathVariable(name = "chapter-id") Long chapterId) {
return ChapterResponse.from(queryChapterService.readOne(chapterId));
public ChapterResponse readOne(@Parameter(description = "챕터 ID", required = true) @PathVariable(name = "chapter-id") Long chapterId) {
return ChapterResponse.from(getChapterQuery.getChapter(chapterId));
}

@GetMapping
@Operation(summary = "모든 챕터 조회", description = "모든 챕터를 조회합니다.")
public List<ChapterResponse> readAll() {
return queryChapterService.readAll().stream()
return getChaptersQuery.getChapters().stream()
.map(ChapterResponse::from)
.toList();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.space.server.domain.chapter.presentation.dto.response;
package com.space.server.domain.chapter.adapter.in.web.dto.response;

import com.space.server.domain.chapter.domain.Chapter;
import io.swagger.v3.oas.annotations.media.Schema;
Expand All @@ -19,6 +19,6 @@ public record ChapterResponse(
Map<String, String> mapObjectImage
) {
public static ChapterResponse from(Chapter chapter) {
return new ChapterResponse(chapter.getId(), chapter.getExplanation(), chapter.getMapObject(), chapter.getMapObjectImage());
return new ChapterResponse(chapter.getId().getValue(), chapter.getExplanation(), chapter.getMapObject(), chapter.getMapObjectImage());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.space.server.domain.chapter.adapter.out.persistence;

import com.space.server.common.annotation.PersistenceAdapter;
import com.space.server.domain.chapter.application.port.out.LoadChapterPort;
import com.space.server.domain.chapter.domain.Chapter;
import com.space.server.domain.chapter.exception.ChapterNotFoundException;
import lombok.RequiredArgsConstructor;

@PersistenceAdapter
@RequiredArgsConstructor
public class ChapterGetAdapter implements LoadChapterPort {

private final ChapterRepository chapterRepository;
private final ChapterMapper chapterMapper;

@Override
public Chapter loadChapter(Long chapterId) {
return chapterRepository.findById(chapterId)
.map(chapterMapper::mapToChapter)
.orElseThrow(ChapterNotFoundException::new);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.space.server.domain.chapter.adapter.out.persistence;

import io.hypersistence.utils.hibernate.type.basic.PostgreSQLHStoreType;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.Type;

import java.util.Map;

@Builder
@Entity
@Table(name = "chapter")
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class ChapterJpaEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column
private String explanation;

@Type(PostgreSQLHStoreType.class)
@Column(columnDefinition = "hstore")
private Map<String, String> mapObject;

@Type(PostgreSQLHStoreType.class)
@Column(columnDefinition = "hstore")
private Map<String, String> mapObjectImage;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.space.server.domain.chapter.adapter.out.persistence;

import com.space.server.domain.chapter.domain.Chapter;
import org.springframework.stereotype.Component;

@Component
public class ChapterMapper {

public Chapter mapToChapter(ChapterJpaEntity chapter) {
return Chapter.builder()
.id(new Chapter.ChapterId(chapter.getId()))
.explanation(chapter.getExplanation())
.mapObject(chapter.getMapObject())
.mapObjectImage(chapter.getMapObjectImage())
.build();
}

public ChapterJpaEntity mapToChapterJpaEntity(Chapter chapter) {
return ChapterJpaEntity.builder()
.id(chapter.getId() == null ? null : chapter.getId().getValue())
.explanation(chapter.getExplanation())
.mapObject(chapter.getMapObject())
.mapObjectImage(chapter.getMapObjectImage())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package com.space.server.domain.chapter.domain.repository;
package com.space.server.domain.chapter.adapter.out.persistence;

import com.space.server.domain.chapter.domain.Chapter;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface ChapterRepository extends JpaRepository<Chapter, Long> {
List<Chapter> findAllByOrderById();
public interface ChapterRepository extends JpaRepository<ChapterJpaEntity, Long> {
List<ChapterJpaEntity> findAllByOrderById();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.space.server.domain.chapter.adapter.out.persistence;

import com.space.server.common.annotation.PersistenceAdapter;
import com.space.server.domain.chapter.application.port.out.LoadChaptersPort;
import com.space.server.domain.chapter.domain.Chapter;
import lombok.RequiredArgsConstructor;

import java.util.List;

@PersistenceAdapter
@RequiredArgsConstructor
public class ChaptersGetAdapter implements LoadChaptersPort {

private final ChapterRepository chapterRepository;
private final ChapterMapper chapterMapper;

@Override
public List<Chapter> loadChapters() {
return chapterRepository.findAll().stream()
.map(chapterMapper::mapToChapter)
.toList();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.space.server.domain.chapter.application.port.in;

import com.space.server.domain.chapter.domain.Chapter;

public interface GetChapterQuery {

Chapter getChapter(Long id);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.space.server.domain.chapter.application.port.in;

import com.space.server.domain.chapter.domain.Chapter;

import java.util.List;

public interface GetChaptersQuery {

List<Chapter> getChapters();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.space.server.domain.chapter.application.port.out;

import com.space.server.domain.chapter.domain.Chapter;

public interface LoadChapterPort {

Chapter loadChapter(Long chapterId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.space.server.domain.chapter.application.port.out;

import com.space.server.domain.chapter.domain.Chapter;

import java.util.List;

public interface LoadChaptersPort {

List<Chapter> loadChapters();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.space.server.domain.chapter.application.service;

import com.space.server.common.annotation.UseCase;
import com.space.server.domain.chapter.application.port.in.GetChapterQuery;
import com.space.server.domain.chapter.application.port.out.LoadChapterPort;
import com.space.server.domain.chapter.domain.Chapter;
import lombok.RequiredArgsConstructor;

@UseCase
@RequiredArgsConstructor
public class GetChapterService implements GetChapterQuery {

private final LoadChapterPort loadChapterPort;

@Override
public Chapter getChapter(Long chapterId) {
return loadChapterPort.loadChapter(chapterId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.space.server.domain.chapter.application.service;

import com.space.server.common.annotation.UseCase;
import com.space.server.domain.chapter.application.port.in.GetChaptersQuery;
import com.space.server.domain.chapter.application.port.out.LoadChaptersPort;
import com.space.server.domain.chapter.domain.Chapter;
import lombok.RequiredArgsConstructor;

import java.util.List;

@UseCase
@RequiredArgsConstructor
public class GetChaptersService implements GetChaptersQuery {

private final LoadChaptersPort loadChaptersPort;

@Override
public List<Chapter> getChapters() {
return loadChaptersPort.loadChapters();
}
}
Loading