Skip to content
This repository was archived by the owner on Jul 7, 2025. It is now read-only.

Commit 255ba16

Browse files
authored
Merge pull request #121 from ASAP-Lettering/ASAP-411
ASAP-411 main space 도메인 제거
2 parents 03f45d5 + 87e8202 commit 255ba16

File tree

8 files changed

+43
-46
lines changed

8 files changed

+43
-46
lines changed

Application-Module/src/main/kotlin/com/asap/application/space/exception/SpaceException.kt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,24 @@ sealed class SpaceException(
1111
class InvalidSpaceUpdateException(
1212
message: String = "유효하지 않는 스페이스 순서 변경 요청입니다.",
1313
) : SpaceException(
14-
errorCode = 1,
15-
message = message,
16-
)
14+
errorCode = 1,
15+
message = message,
16+
)
1717

1818
class SpaceNotFoundException(
1919
message: String = "해당 스페이스를 찾을 수 없습니다.",
2020
) : SpaceException(
21-
errorCode = 2,
22-
message = message,
23-
)
21+
errorCode = 2,
22+
message = message,
23+
)
24+
25+
class MainSpaceNotFoundException(
26+
message: String = "메인 스페이스를 찾을 수 없습니다.",
27+
) : SpaceException(
28+
errorCode = 3,
29+
message = message,
30+
httpStatus = 500
31+
)
2432

2533
companion object {
2634
const val CODE_PREFIX = "SPACE"

Application-Module/src/main/kotlin/com/asap/application/space/port/out/SpaceManagementPort.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package com.asap.application.space.port.out
22

33
import com.asap.domain.common.DomainId
4-
import com.asap.domain.space.entity.MainSpace
54
import com.asap.domain.space.entity.Space
65

76
interface SpaceManagementPort {
8-
fun getMainSpace(userId: DomainId): MainSpace
7+
fun getMainSpace(userId: DomainId): Space
98

109
fun getSpaceNotNull(
1110
userId: DomainId,

Application-Module/src/main/kotlin/com/asap/application/space/service/SpaceQueryService.kt

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,11 @@ class SpaceQueryService(
1818
) : GetMainSpaceUsecase,
1919
GetSpaceUsecase {
2020
override fun get(query: GetMainSpaceUsecase.Query): GetMainSpaceUsecase.Response {
21-
val mainSpace =
22-
spaceManagementPort.getMainSpace(
23-
userId = DomainId(query.userId),
24-
)
25-
val space =
26-
spaceManagementPort.getSpaceNotNull(
27-
userId = DomainId(query.userId),
28-
spaceId = mainSpace.id,
29-
)
21+
val space = spaceManagementPort.getMainSpace(
22+
userId = DomainId(query.userId),
23+
)
3024
return GetMainSpaceUsecase.Response(
31-
id = mainSpace.id.value,
25+
id = space.id.value,
3226
username = userManagementPort.getUserNotNull(DomainId(query.userId)).username,
3327
templateType = space.templateType,
3428
spaceName = space.name,

Application-Module/src/test/kotlin/com/asap/application/space/service/SpaceQueryServiceTest.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import com.asap.application.user.port.out.UserManagementPort
88
import com.asap.domain.SpaceFixture
99
import com.asap.domain.UserFixture
1010
import com.asap.domain.common.DomainId
11-
import com.asap.domain.space.entity.MainSpace
1211
import io.kotest.core.spec.style.BehaviorSpec
1312
import io.kotest.matchers.nulls.shouldNotBeNull
1413
import io.kotest.matchers.shouldBe
@@ -30,10 +29,6 @@ class SpaceQueryServiceTest :
3029
)
3130

3231
given("메인 스페이스 조회 요청이 들어왔을 때") {
33-
val mainSpace =
34-
MainSpace(
35-
id = DomainId.generate(),
36-
)
3732
val user = UserFixture.createUser()
3833
val query =
3934
GetMainSpaceUsecase.Query(
@@ -42,13 +37,13 @@ class SpaceQueryServiceTest :
4237
val space = SpaceFixture.createSpace(
4338
userId = user.id,
4439
)
45-
every { spaceManagementPort.getMainSpace(any()) } returns mainSpace
40+
every { spaceManagementPort.getMainSpace(any()) } returns space
4641
every { userManagementPort.getUserNotNull(any()) } returns user
4742
every { spaceManagementPort.getSpaceNotNull(any(), any()) } returns space
4843
`when`("유저 아이디가 주어진다면") {
4944
val response = spaceQueryService.get(query)
5045
then("메인 스페이스를 반환한다") {
51-
response.id shouldBe mainSpace.id.value
46+
response.id shouldBe space.id.value
5247
response.username shouldBe user.username
5348
response.templateType shouldBe space.templateType
5449
response.spaceName shouldBe space.name

Domain-Module/src/main/kotlin/com/asap/domain/space/entity/MainSpace.kt

Lines changed: 0 additions & 8 deletions
This file was deleted.

Infrastructure-Module/Persistence/src/main/kotlin/com/asap/persistence/jpa/space/SpaceMapper.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
11
package com.asap.persistence.jpa.space
22

33
import com.asap.domain.common.DomainId
4-
import com.asap.domain.space.entity.MainSpace
54
import com.asap.domain.space.entity.Space
65
import com.asap.persistence.jpa.space.entity.SpaceEntity
76

87
object SpaceMapper {
9-
fun toMainSpace(spaceEntity: SpaceEntity): MainSpace =
10-
MainSpace(
11-
id = DomainId(spaceEntity.id),
12-
)
13-
148
fun toSpace(spaceEntity: SpaceEntity) =
159
Space(
1610
id = DomainId(spaceEntity.id),

Infrastructure-Module/Persistence/src/main/kotlin/com/asap/persistence/jpa/space/adapter/SpaceManagementJpaAdapter.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.asap.application.space.exception.SpaceException
44
import com.asap.application.space.port.out.SpaceManagementPort
55
import com.asap.common.event.EventPublisher
66
import com.asap.domain.common.DomainId
7-
import com.asap.domain.space.entity.MainSpace
87
import com.asap.domain.space.entity.Space
98
import com.asap.persistence.jpa.space.SpaceMapper
109
import com.asap.persistence.jpa.space.repository.*
@@ -15,14 +14,14 @@ class SpaceManagementJpaAdapter(
1514
private val spaceJpaRepository: SpaceJpaRepository,
1615
private val eventPublisher: EventPublisher,
1716
) : SpaceManagementPort {
18-
override fun getMainSpace(userId: DomainId): MainSpace =
17+
override fun getMainSpace(userId: DomainId): Space =
1918
spaceJpaRepository
20-
.findAllActiveSpaceByUserId(userId.value)
21-
.first {
22-
it.isMain
23-
}.let {
24-
SpaceMapper.toMainSpace(it)
19+
.findActiveMainSpace(userId.value)
20+
?.let {
21+
SpaceMapper.toSpace(it)
2522
}
23+
?: throw SpaceException.MainSpaceNotFoundException()
24+
2625

2726
override fun getSpaceNotNull(
2827
userId: DomainId,

Infrastructure-Module/Persistence/src/main/kotlin/com/asap/persistence/jpa/space/repository/SpaceJpaRepository.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,18 @@ interface SpaceJpaRepository : JpaRepository<SpaceEntity, String> {
6363
entityStatus: EntityStatus,
6464
): List<SpaceEntity>
6565

66+
@Query("""
67+
SELECT s
68+
FROM SpaceEntity s
69+
WHERE s.isMain = true
70+
AND s.userId = :userId
71+
AND s.spaceStatus = :entityStatus
72+
""")
73+
fun findMainSpace(
74+
userId: String,
75+
entityStatus: EntityStatus
76+
): SpaceEntity?
77+
6678
@Modifying
6779
@Query(
6880
"""
@@ -105,4 +117,8 @@ fun SpaceJpaRepository.findActiveSpaceByIdAndUserId(
105117
userId: String,
106118
): SpaceEntity? = findByIdAndUserId(id, userId, EntityStatus.ACTIVE)
107119

120+
fun SpaceJpaRepository.findActiveMainSpace(
121+
userId: String,
122+
): SpaceEntity? = findMainSpace(userId, EntityStatus.ACTIVE)
123+
108124
fun SpaceJpaRepository.countActiveSpaceByUserId(userId: String): Long = countByUserId(userId, EntityStatus.ACTIVE)

0 commit comments

Comments
 (0)