diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftApplicationNoSequence.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftApplicationNoSequence.kt new file mode 100644 index 00000000..988d1cd7 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftApplicationNoSequence.kt @@ -0,0 +1,20 @@ +package kr.co.vividnext.sodalive.v2.gift.adapter.out.persistence + +import kr.co.vividnext.sodalive.common.BaseEntity +import javax.persistence.Column +import javax.persistence.Entity +import javax.persistence.Table +import javax.persistence.UniqueConstraint + +@Entity +@Table( + name = "gift_application_no_sequence", + uniqueConstraints = [UniqueConstraint(name = "uk_gift_application_no_sequence_date", columnNames = ["sequence_date"])] +) +class GiftApplicationNoSequence( + @Column(name = "sequence_date", nullable = false, length = 8) + val sequenceDate: String, + + @Column(name = "last_sequence", nullable = false) + var lastSequence: Int +) : BaseEntity() diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftApplicationNoSequenceRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftApplicationNoSequenceRepository.kt new file mode 100644 index 00000000..b557d321 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftApplicationNoSequenceRepository.kt @@ -0,0 +1,15 @@ +package kr.co.vividnext.sodalive.v2.gift.adapter.out.persistence + +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.data.jpa.repository.Lock +import org.springframework.data.jpa.repository.Query +import org.springframework.data.repository.query.Param +import javax.persistence.LockModeType + +interface GiftApplicationNoSequenceRepository : JpaRepository { + fun findBySequenceDate(sequenceDate: String): GiftApplicationNoSequence? + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query("select s from GiftApplicationNoSequence s where s.sequenceDate = :sequenceDate") + fun findBySequenceDateForUpdate(@Param("sequenceDate") sequenceDate: String): GiftApplicationNoSequence? +} diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftSizePrice.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftSizePrice.kt new file mode 100644 index 00000000..6f5c934c --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftSizePrice.kt @@ -0,0 +1,30 @@ +package kr.co.vividnext.sodalive.v2.gift.adapter.out.persistence + +import kr.co.vividnext.sodalive.common.BaseEntity +import kr.co.vividnext.sodalive.v2.gift.domain.GiftSize +import javax.persistence.Column +import javax.persistence.Entity +import javax.persistence.EnumType +import javax.persistence.Enumerated +import javax.persistence.Table +import javax.persistence.UniqueConstraint + +@Entity +@Table( + name = "gift_size_price", + uniqueConstraints = [UniqueConstraint(name = "uk_gift_size_price_size_code", columnNames = ["size_code"])] +) +class GiftSizePrice( + @Enumerated(EnumType.STRING) + @Column(name = "size_code", nullable = false, length = 20) + val sizeCode: GiftSize, + + @Column(name = "base_price_can", nullable = false) + var basePriceCan: Int, + + @Column(name = "sale_price_can", nullable = false) + var salePriceCan: Int, + + @Column(name = "is_active", nullable = false) + var isActive: Boolean = true +) : BaseEntity() diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftSizePriceRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftSizePriceRepository.kt new file mode 100644 index 00000000..19495ab1 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftSizePriceRepository.kt @@ -0,0 +1,8 @@ +package kr.co.vividnext.sodalive.v2.gift.adapter.out.persistence + +import kr.co.vividnext.sodalive.v2.gift.domain.GiftSize +import org.springframework.data.jpa.repository.JpaRepository + +interface GiftSizePriceRepository : JpaRepository { + fun findBySizeCode(sizeCode: GiftSize): GiftSizePrice? +}