Skip to content

Commit 53308a5

Browse files
authored
Merge pull request #16 from CarToi/dev
[Feat/refactor consume] 데이터 소비 로직 리팩토링 보완 1
2 parents 880a58b + b76025c commit 53308a5

31 files changed

+696
-135
lines changed

build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ dependencies {
5353

5454
// discord
5555
implementation 'net.dv8tion:JDA:5.6.1'
56+
57+
// caffeine cache
58+
implementation 'org.springframework.boot:spring-boot-starter-cache'
59+
implementation 'com.github.ben-manes.caffeine:caffeine'
5660
}
5761

5862
test {

src/main/java/org/jun/saemangeum/consume/controller/SurveyController.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package org.jun.saemangeum.consume.controller;
22

33
import lombok.RequiredArgsConstructor;
4-
import org.jun.saemangeum.consume.domain.dto.AverageRequest;
54
import org.jun.saemangeum.consume.domain.dto.RecommendationResponse;
65
import org.jun.saemangeum.consume.domain.dto.SurveyCreateRequest;
76
import org.jun.saemangeum.consume.domain.dto.SurveyUpdateRequest;
8-
import org.jun.saemangeum.consume.service.SurveyRecommendationService;
7+
import org.jun.saemangeum.consume.service.application.SurveyRecommendationService;
98
import org.springframework.web.bind.annotation.*;
109

1110
import java.util.List;
@@ -32,12 +31,4 @@ public List<RecommendationResponse> createSurvey(@RequestBody SurveyCreateReques
3231
public void updateSurvey(@RequestBody SurveyUpdateRequest request) {
3332
surveyRecommendationService.updateSurvey(request);
3433
}
35-
36-
/**
37-
* 평균 사용자 설문 응답 확인 응답 데이터 리스트 반환
38-
*/
39-
@GetMapping("/average")
40-
public List<RecommendationResponse> readAverageSurvey(@RequestBody AverageRequest request) {
41-
return surveyRecommendationService.calculateAverageSurvey(request);
42-
}
4334
}

src/main/java/org/jun/saemangeum/consume/domain/entity/RecommendationLog.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import lombok.Builder;
66
import lombok.Getter;
77
import lombok.NoArgsConstructor;
8-
import org.jun.saemangeum.global.domain.Content;
8+
import org.jun.saemangeum.global.domain.IContent;
99

1010
@Entity
1111
@Builder
@@ -18,14 +18,14 @@ public class RecommendationLog {
1818
@GeneratedValue(strategy = GenerationType.IDENTITY)
1919
private Long id;
2020

21-
@Column(name = "content_id")
22-
private Long contentId;
21+
@Column(name = "content_title")
22+
private String contentTitle;
2323

2424
@Column(name = "survey_id")
2525
private Long surveyId;
2626

27-
public RecommendationLog(Content content, Survey survey) {
28-
this.contentId = content.getId();
27+
public RecommendationLog(IContent content, Survey survey) {
28+
this.contentTitle = content.getTitle();
2929
this.surveyId = survey.getId();
3030
}
3131
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package org.jun.saemangeum.consume.domain.swap;
2+
3+
import jakarta.persistence.*;
4+
import lombok.Getter;
5+
import org.jun.saemangeum.consume.domain.dto.RecommendationResponse;
6+
import org.jun.saemangeum.global.domain.Category;
7+
import org.jun.saemangeum.global.domain.CollectSource;
8+
import org.jun.saemangeum.global.domain.IContent;
9+
10+
@Getter
11+
@Entity
12+
@Table(name = "contents_view")
13+
public class ContentView implements IContent {
14+
@Id
15+
private Long id;
16+
17+
@Column(nullable = false)
18+
private String title;
19+
20+
@Column(nullable = false)
21+
private String position;
22+
23+
@Enumerated(EnumType.STRING)
24+
@Column(nullable = false)
25+
private Category category;
26+
27+
@Column
28+
private String image;
29+
30+
@Column
31+
private String url;
32+
33+
@Lob // MySQL 등에서는 TEXT 등으로
34+
@Column(columnDefinition = "TEXT")
35+
private String introduction;
36+
37+
@Column
38+
private CollectSource collectSource;
39+
40+
@OneToOne(mappedBy = "contentView")
41+
private VectorView vectorView;
42+
43+
@Override
44+
public RecommendationResponse to() {
45+
return new RecommendationResponse(title, position, category, image, url);
46+
}
47+
48+
@Override
49+
public String getTitle() {
50+
return title;
51+
}
52+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.jun.saemangeum.consume.domain.swap;
2+
3+
import jakarta.persistence.*;
4+
import lombok.Getter;
5+
6+
@Getter
7+
@Entity
8+
@Table(
9+
name = "vectors_view",
10+
indexes = @Index(name = "fk_vector_view", columnList = "content_id") // 외래키 제약조건 제거로 직접 인덱스 세팅
11+
)
12+
public class VectorView {
13+
@Id
14+
private Long id;
15+
16+
@Lob
17+
@Column(columnDefinition = "BLOB")
18+
private byte[] vector;
19+
20+
@OneToOne
21+
@JoinColumn(
22+
name = "content_id",
23+
insertable = false,
24+
updatable = false,
25+
foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT) // 외래키 제약조건 제거
26+
)
27+
private ContentView contentView;
28+
}

src/main/java/org/jun/saemangeum/consume/repository/RecommendationLogRepository.java renamed to src/main/java/org/jun/saemangeum/consume/repository/entity/RecommendationLogRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.jun.saemangeum.consume.repository;
1+
package org.jun.saemangeum.consume.repository.entity;
22

33
import org.jun.saemangeum.consume.domain.entity.RecommendationLog;
44
import org.springframework.data.jpa.repository.JpaRepository;

src/main/java/org/jun/saemangeum/consume/repository/SurveyRepository.java renamed to src/main/java/org/jun/saemangeum/consume/repository/entity/SurveyRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.jun.saemangeum.consume.repository;
1+
package org.jun.saemangeum.consume.repository.entity;
22

33
import org.jun.saemangeum.consume.domain.entity.Survey;
44
import org.springframework.data.jpa.repository.JpaRepository;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.jun.saemangeum.consume.repository.swap;
2+
3+
import org.jun.saemangeum.consume.domain.swap.ContentView;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.stereotype.Repository;
6+
7+
@Repository
8+
public interface ContentViewRepository extends JpaRepository<ContentView, Long> {
9+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.jun.saemangeum.consume.repository.swap;
2+
3+
import org.jun.saemangeum.consume.domain.swap.VectorView;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.data.jpa.repository.Query;
6+
import org.springframework.stereotype.Repository;
7+
8+
import java.util.List;
9+
10+
@Repository
11+
public interface VectorViewRepository extends JpaRepository<VectorView, Long> {
12+
@Query("SELECT v FROM VectorView v JOIN FETCH v.contentView")
13+
List<VectorView> findAllWithContentView();
14+
}

src/main/java/org/jun/saemangeum/consume/service/SurveyRecommendationService.java

Lines changed: 0 additions & 109 deletions
This file was deleted.

0 commit comments

Comments
 (0)