Skip to content

Commit

Permalink
feat: Review, Reply like entity, repository
Browse files Browse the repository at this point in the history
  • Loading branch information
Grantzile committed Jan 9, 2025
1 parent 7a7e86c commit c8dd09d
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.wafflestudio.interpark.review.persistence

import com.wafflestudio.interpark.user.persistence.UserEntity
import jakarta.persistence.*
import java.time.Instant

@Entity(name = "reply_like")
@Table(
name = "reply_like",
uniqueConstraints = [UniqueConstraint(columnNames = ["reply_id", "user_id"])],
indexes = [
Index(name = "idx_reply_user", columnList = "reply_id, user_id"),
],
)
class ReplyLikeEntity(
@Id
@GeneratedValue(strategy = GenerationType.UUID)
val id: String? = null,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "reply_id", nullable = false)
var reply: ReplyEntity,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
var user: UserEntity,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.wafflestudio.interpark.review.persistence

import com.wafflestudio.interpark.user.persistence.UserEntity

import jakarta.persistence.LockModeType

import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.data.jpa.repository.Lock

interface ReplyLikeRepository : JpaRepository<ReplyLikeEntity, String> {
fun countByReply(reply: ReplyEntity): Int

@Lock(LockModeType.PESSIMISTIC_WRITE)
fun findByReplyAndUser(
reply: ReplyEntity,
user: UserEntity,
): ReplyLikeEntity?
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.wafflestudio.interpark.review.persistence

import com.wafflestudio.interpark.user.persistence.UserEntity
import jakarta.persistence.*
import java.time.Instant

@Entity(name = "review_like")
@Table(
name = "review_like",
uniqueConstraints = [UniqueConstraint(columnNames = ["review_id", "user_id"])],
indexes = [
Index(name = "idx_review_user", columnList = "review_id, user_id"),
],
)
class ReviewLikeEntity(
@Id
@GeneratedValue(strategy = GenerationType.UUID)
val id: String? = null,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "review_id", nullable = false)
var review: ReviewEntity,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
var user: UserEntity,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.wafflestudio.interpark.review.persistence

import com.wafflestudio.interpark.user.persistence.UserEntity

import jakarta.persistence.LockModeType

import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.data.jpa.repository.Lock

interface ReviewLikeRepository : JpaRepository<ReviewLikeEntity, String> {
fun countByReview(review: ReviewEntity): Int

@Lock(LockModeType.PESSIMISTIC_WRITE)
fun findByReviewAndUser(
review: ReviewEntity,
user: UserEntity,
): ReviewLikeEntity?
}

0 comments on commit c8dd09d

Please sign in to comment.