From 70832a10b995b0b75a1c0c2d71d8d751d3c49b34 Mon Sep 17 00:00:00 2001 From: Klaus Date: Sun, 31 May 2026 18:18:23 +0900 Subject: [PATCH] =?UTF-8?q?feat(recommend):=20=EC=BD=98=ED=85=90=EC=B8=A0?= =?UTF-8?q?=20=EC=A1=B0=ED=9A=8C=20=EC=9D=B4=EB=A0=A5=20=EB=AA=A8=EB=8D=B8?= =?UTF-8?q?=EC=9D=84=20=EC=B6=94=EA=B0=80=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistence/CreatorContentViewHistory.kt | 23 +++++++++++++++++++ .../CreatorContentViewHistoryRepository.kt | 5 ++++ .../port/out/CreatorContentViewHistoryPort.kt | 16 +++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/adapter/out/persistence/CreatorContentViewHistory.kt create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/adapter/out/persistence/CreatorContentViewHistoryRepository.kt create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/port/out/CreatorContentViewHistoryPort.kt diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/adapter/out/persistence/CreatorContentViewHistory.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/adapter/out/persistence/CreatorContentViewHistory.kt new file mode 100644 index 00000000..3c076488 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/adapter/out/persistence/CreatorContentViewHistory.kt @@ -0,0 +1,23 @@ +package kr.co.vividnext.sodalive.v2.recommend.adapter.out.persistence + +import kr.co.vividnext.sodalive.common.BaseEntity +import java.time.LocalDateTime +import javax.persistence.Column +import javax.persistence.Entity +import javax.persistence.Table + +@Entity +@Table(name = "creator_content_view_history") +class CreatorContentViewHistory( + @Column(name = "member_id", nullable = false, updatable = false) + val memberId: Long, + + @Column(name = "content_id", nullable = false, updatable = false) + val contentId: Long, + + @Column(name = "genre_id", nullable = false, updatable = false) + val genreId: Long, + + @Column(name = "viewed_at", nullable = false, updatable = false) + val viewedAt: LocalDateTime +) : BaseEntity() diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/adapter/out/persistence/CreatorContentViewHistoryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/adapter/out/persistence/CreatorContentViewHistoryRepository.kt new file mode 100644 index 00000000..3bf012bd --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/adapter/out/persistence/CreatorContentViewHistoryRepository.kt @@ -0,0 +1,5 @@ +package kr.co.vividnext.sodalive.v2.recommend.adapter.out.persistence + +import org.springframework.data.jpa.repository.JpaRepository + +interface CreatorContentViewHistoryRepository : JpaRepository diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/port/out/CreatorContentViewHistoryPort.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/port/out/CreatorContentViewHistoryPort.kt new file mode 100644 index 00000000..830dc5b4 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommend/port/out/CreatorContentViewHistoryPort.kt @@ -0,0 +1,16 @@ +package kr.co.vividnext.sodalive.v2.recommend.port.out + +import java.time.LocalDateTime + +interface CreatorContentViewHistoryPort { + fun findGenreIdByContentId(contentId: Long): Long? + + fun save(record: CreatorContentViewHistoryRecord) +} + +data class CreatorContentViewHistoryRecord( + val memberId: Long, + val contentId: Long, + val genreId: Long, + val viewedAt: LocalDateTime +)