Skip to content

Commit

Permalink
refactor : GiftCouponMessageAdapter 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
this-is-spear committed May 19, 2024
1 parent 5cf7ecf commit 11ee6c1
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,39 @@
package com.example.estdelivery.coupon.application.port.out.adapter.persistence

import com.example.estdelivery.coupon.application.port.out.CreateGiftCouponMessageStatePort
import com.example.estdelivery.coupon.application.port.out.ValidateGiftCouponCodeStatePort
import com.example.estdelivery.coupon.application.port.out.adapter.persistence.entity.GiftMessageEntity
import com.example.estdelivery.coupon.application.port.out.adapter.persistence.mapper.fromCoupon
import com.example.estdelivery.coupon.application.port.out.adapter.persistence.repository.GiftMessageRepository
import com.example.estdelivery.coupon.domain.coupon.Coupon
import com.example.estdelivery.coupon.domain.coupon.GiftCoupon
import com.example.estdelivery.coupon.domain.coupon.GiftCouponCode
import com.example.estdelivery.coupon.domain.coupon.GiftMessage
import com.example.estdelivery.coupon.domain.member.Member
import org.springframework.stereotype.Component

@Component
class GiftCouponMessageAdapter : CreateGiftCouponMessageStatePort {
override fun create(sender: Member, coupon: Coupon, message: String): GiftMessage {
TODO("Not yet implemented")
class GiftCouponMessageAdapter(
private val giftMessageRepository: GiftMessageRepository,
) : CreateGiftCouponMessageStatePort, ValidateGiftCouponCodeStatePort {
override fun create(sender: Member, coupon: Coupon, message: String, giftCouponCode: GiftCouponCode): GiftMessage {
val giftMessageEntity = giftMessageRepository.save(
GiftMessageEntity(
sender = sender.id,
coupon = fromCoupon(coupon),
message = message,
enrollCode = giftCouponCode.code
)
)
return GiftMessage(
sender = sender,
giftMessage = giftMessageEntity.message,
giftCouponCode = GiftCouponCode(giftMessageEntity.enrollCode),
giftCoupon = GiftCoupon(coupon)
)
}

override fun validate(giftCouponCode: GiftCouponCode): Boolean {
return giftMessageRepository.existsByEnrollCode(giftCouponCode.code)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.example.estdelivery.coupon.application.port.out.adapter.persistence.entity

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.OneToOne
import jakarta.persistence.Table
import java.time.LocalDate

@Entity
@Table(name = "gift_message")
class GiftMessageEntity(
val message: String,
@Column(name = "sender_id")
val sender: Long,
val enrollCode: String,
@OneToOne
@JoinColumn(name = "coupon_id")
val coupon: CouponEntity,
val enrollDate: LocalDate = LocalDate.now(),
val isUsed: Boolean = false,
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null,
) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (other !is GiftMessageEntity) return false

if (id != other.id) return false

return true
}

override fun hashCode(): Int {
return id?.hashCode() ?: 0
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.example.estdelivery.coupon.application.port.out.adapter.persistence.repository

import com.example.estdelivery.coupon.application.port.out.adapter.persistence.entity.GiftMessageEntity
import org.springframework.data.jpa.repository.JpaRepository

interface GiftMessageRepository : JpaRepository<GiftMessageEntity, Long> {
fun existsByEnrollCode(enrollCode: String): Boolean
}

0 comments on commit 11ee6c1

Please sign in to comment.