[#48] Tosspay mocking 서버 구현을 위한 멀티모듈 전환 #49

Merged
pricelees merged 39 commits from feat/#48 into main 2025-09-30 00:39:14 +00:00
14 changed files with 63 additions and 41 deletions
Showing only changes of commit ab84b329fd - Show all commits

View File

@ -0,0 +1,17 @@
plugins {
id("org.springframework.boot")
kotlin("plugin.spring")
kotlin("plugin.jpa")
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("com.github.f4b6a3:tsid-creator:5.2.6")
testRuntimeOnly("com.h2database:h2")
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("io.kotest:kotest-runner-junit5:5.9.1")
testImplementation("io.kotest.extensions:kotest-extensions-spring:1.3.0")
implementation(project(":common:utils"))
}

View File

@ -1,14 +1,14 @@
package com.sangdol.roomescape.common.entity package com.sangdol.common.persistence
import jakarta.persistence.* import jakarta.persistence.Column
import jakarta.persistence.EntityListeners
import jakarta.persistence.MappedSuperclass
import org.springframework.data.annotation.CreatedBy import org.springframework.data.annotation.CreatedBy
import org.springframework.data.annotation.CreatedDate import org.springframework.data.annotation.CreatedDate
import org.springframework.data.annotation.LastModifiedBy import org.springframework.data.annotation.LastModifiedBy
import org.springframework.data.annotation.LastModifiedDate import org.springframework.data.annotation.LastModifiedDate
import org.springframework.data.domain.Persistable
import org.springframework.data.jpa.domain.support.AuditingEntityListener import org.springframework.data.jpa.domain.support.AuditingEntityListener
import java.time.LocalDateTime import java.time.LocalDateTime
import kotlin.jvm.Transient
@MappedSuperclass @MappedSuperclass
@EntityListeners(AuditingEntityListener::class) @EntityListeners(AuditingEntityListener::class)
@ -31,23 +31,3 @@ abstract class AuditingBaseEntity(
@LastModifiedBy @LastModifiedBy
var updatedBy: Long = 0L var updatedBy: Long = 0L
} }
@MappedSuperclass
abstract class PersistableBaseEntity(
@Id
@Column(name = "id")
private val _id: Long,
@Transient
private var isNewEntity: Boolean = true
) : Persistable<Long> {
@PostLoad
@PrePersist
fun markNotNew() {
isNewEntity = false
}
override fun getId(): Long = _id
override fun isNew(): Boolean = isNewEntity
}

View File

@ -0,0 +1,25 @@
package com.sangdol.common.persistence
import jakarta.persistence.*
import org.springframework.data.domain.Persistable
import kotlin.jvm.Transient
@MappedSuperclass
abstract class PersistableBaseEntity(
@Id
@Column(name = "id")
private val _id: Long,
@Transient
private var isNewEntity: Boolean = true
) : Persistable<Long> {
@PostLoad
@PrePersist
fun markNotNew() {
isNewEntity = false
}
override fun getId(): Long = _id
override fun isNew(): Boolean = isNewEntity
}

View File

@ -1,8 +1,8 @@
package com.sangdol.roomescape.admin.infrastructure.persistence package com.sangdol.roomescape.admin.infrastructure.persistence
import com.sangdol.common.persistence.AuditingBaseEntity
import jakarta.persistence.* import jakarta.persistence.*
import org.springframework.data.jpa.domain.support.AuditingEntityListener import org.springframework.data.jpa.domain.support.AuditingEntityListener
import com.sangdol.roomescape.common.entity.AuditingBaseEntity
@Entity @Entity
@Table(name = "admin") @Table(name = "admin")

View File

@ -1,10 +1,10 @@
package com.sangdol.roomescape.auth.infrastructure.persistence package com.sangdol.roomescape.auth.infrastructure.persistence
import com.sangdol.common.persistence.PersistableBaseEntity
import com.sangdol.roomescape.common.dto.PrincipalType
import jakarta.persistence.* import jakarta.persistence.*
import org.springframework.data.annotation.CreatedDate import org.springframework.data.annotation.CreatedDate
import org.springframework.data.jpa.domain.support.AuditingEntityListener import org.springframework.data.jpa.domain.support.AuditingEntityListener
import com.sangdol.roomescape.common.dto.PrincipalType
import com.sangdol.roomescape.common.entity.PersistableBaseEntity
import java.time.LocalDateTime import java.time.LocalDateTime
@Entity @Entity

View File

@ -1,8 +1,8 @@
package com.sangdol.roomescape.payment.infrastructure.persistence package com.sangdol.roomescape.payment.infrastructure.persistence
import com.sangdol.common.persistence.PersistableBaseEntity
import jakarta.persistence.Entity import jakarta.persistence.Entity
import jakarta.persistence.Table import jakarta.persistence.Table
import com.sangdol.roomescape.common.entity.PersistableBaseEntity
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.OffsetDateTime import java.time.OffsetDateTime

View File

@ -1,8 +1,8 @@
package com.sangdol.roomescape.payment.infrastructure.persistence package com.sangdol.roomescape.payment.infrastructure.persistence
import jakarta.persistence.* import com.sangdol.common.persistence.PersistableBaseEntity
import com.sangdol.roomescape.common.entity.PersistableBaseEntity
import com.sangdol.roomescape.payment.infrastructure.common.* import com.sangdol.roomescape.payment.infrastructure.common.*
import jakarta.persistence.*
@Entity @Entity
@Table(name = "payment_detail") @Table(name = "payment_detail")

View File

@ -1,13 +1,13 @@
package com.sangdol.roomescape.payment.infrastructure.persistence package com.sangdol.roomescape.payment.infrastructure.persistence
import com.sangdol.common.persistence.PersistableBaseEntity
import com.sangdol.roomescape.payment.infrastructure.common.PaymentMethod
import com.sangdol.roomescape.payment.infrastructure.common.PaymentStatus
import com.sangdol.roomescape.payment.infrastructure.common.PaymentType
import jakarta.persistence.Entity import jakarta.persistence.Entity
import jakarta.persistence.EnumType import jakarta.persistence.EnumType
import jakarta.persistence.Enumerated import jakarta.persistence.Enumerated
import jakarta.persistence.Table import jakarta.persistence.Table
import com.sangdol.roomescape.common.entity.PersistableBaseEntity
import com.sangdol.roomescape.payment.infrastructure.common.PaymentMethod
import com.sangdol.roomescape.payment.infrastructure.common.PaymentStatus
import com.sangdol.roomescape.payment.infrastructure.common.PaymentType
import java.time.OffsetDateTime import java.time.OffsetDateTime
@Entity @Entity

View File

@ -1,10 +1,10 @@
package com.sangdol.roomescape.reservation.infrastructure.persistence package com.sangdol.roomescape.reservation.infrastructure.persistence
import com.sangdol.common.persistence.PersistableBaseEntity
import jakarta.persistence.Entity import jakarta.persistence.Entity
import jakarta.persistence.EnumType import jakarta.persistence.EnumType
import jakarta.persistence.Enumerated import jakarta.persistence.Enumerated
import jakarta.persistence.Table import jakarta.persistence.Table
import com.sangdol.roomescape.common.entity.PersistableBaseEntity
import java.time.LocalDateTime import java.time.LocalDateTime
@Entity @Entity

View File

@ -1,10 +1,10 @@
package com.sangdol.roomescape.reservation.infrastructure.persistence package com.sangdol.roomescape.reservation.infrastructure.persistence
import com.sangdol.common.persistence.AuditingBaseEntity
import jakarta.persistence.Entity import jakarta.persistence.Entity
import jakarta.persistence.EnumType import jakarta.persistence.EnumType
import jakarta.persistence.Enumerated import jakarta.persistence.Enumerated
import jakarta.persistence.Table import jakarta.persistence.Table
import com.sangdol.roomescape.common.entity.AuditingBaseEntity
@Entity @Entity
@Table(name = "reservation") @Table(name = "reservation")

View File

@ -1,12 +1,12 @@
package com.sangdol.roomescape.schedule.infrastructure.persistence package com.sangdol.roomescape.schedule.infrastructure.persistence
import com.sangdol.common.persistence.PersistableBaseEntity
import com.sangdol.roomescape.common.util.MdcPrincipalId
import jakarta.persistence.* import jakarta.persistence.*
import org.springframework.data.annotation.CreatedBy import org.springframework.data.annotation.CreatedBy
import org.springframework.data.annotation.CreatedDate import org.springframework.data.annotation.CreatedDate
import org.springframework.data.annotation.LastModifiedDate import org.springframework.data.annotation.LastModifiedDate
import org.springframework.data.jpa.domain.support.AuditingEntityListener import org.springframework.data.jpa.domain.support.AuditingEntityListener
import com.sangdol.roomescape.common.entity.PersistableBaseEntity
import com.sangdol.roomescape.common.util.MdcPrincipalId
import java.time.LocalDate import java.time.LocalDate
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.LocalTime import java.time.LocalTime

View File

@ -1,8 +1,8 @@
package com.sangdol.roomescape.store.infrastructure.persistence package com.sangdol.roomescape.store.infrastructure.persistence
import com.sangdol.common.persistence.AuditingBaseEntity
import jakarta.persistence.* import jakarta.persistence.*
import org.springframework.data.jpa.domain.support.AuditingEntityListener import org.springframework.data.jpa.domain.support.AuditingEntityListener
import com.sangdol.roomescape.common.entity.AuditingBaseEntity
@Entity @Entity
@EntityListeners(AuditingEntityListener::class) @EntityListeners(AuditingEntityListener::class)

View File

@ -1,7 +1,7 @@
package com.sangdol.roomescape.theme.infrastructure.persistence package com.sangdol.roomescape.theme.infrastructure.persistence
import com.sangdol.common.persistence.AuditingBaseEntity
import jakarta.persistence.* import jakarta.persistence.*
import com.sangdol.roomescape.common.entity.AuditingBaseEntity
@Entity @Entity
@Table(name = "theme") @Table(name = "theme")

View File

@ -1,7 +1,7 @@
package com.sangdol.roomescape.user.infrastructure.persistence package com.sangdol.roomescape.user.infrastructure.persistence
import com.sangdol.common.persistence.AuditingBaseEntity
import jakarta.persistence.* import jakarta.persistence.*
import com.sangdol.roomescape.common.entity.AuditingBaseEntity
@Entity @Entity
@Table(name = "users") @Table(name = "users")