Skip to content

Commit 3834e06

Browse files
authored
[feat/#19] 초기 파일 셋팅 (#20)
* feat: application.yml에 rds ssh 터널링 프로필 추가 * feat: 응답 통일 구현 * feat: 에러 응답 추가 * refactor: 중복 코드 병합 * feat: 전역 에러 핸들러 구현 * refactor: 메서드 네이밍 명확화 및 패키지 구조 개선 * feat: 초기 엔티티 셋팅 * chore: dev 프로필 ddl 설정 update로 변경 * feat: 스웨거 설정 추가
1 parent 192cc2a commit 3834e06

30 files changed

Lines changed: 828 additions & 4 deletions

build.gradle

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,15 @@ dependencies {
4444
compileOnly 'org.projectlombok:lombok'
4545
annotationProcessor 'org.projectlombok:lombok'
4646

47+
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.13'
48+
4749
// implementation 'org.springframework.boot:spring-boot-starter-batch'
4850
// testImplementation 'org.springframework.batch:spring-batch-test'
4951

5052
// implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
5153
// implementation 'org.springframework.boot:spring-boot-starter-security'
5254
// testImplementation 'org.springframework.security:spring-security-test'
5355

54-
// developmentOnly 'org.springframework.boot:spring-boot-docker-compose'
55-
// developmentOnly 'org.springframework.ai:spring-ai-spring-boot-docker-compose'
56-
5756
// implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
5857
// implementation 'org.springframework.ai:spring-ai-advisors-vector-store'
5958
// implementation 'org.springframework.ai:spring-ai-starter-vector-store-elasticsearch'

src/main/java/com/techfork/TechForkApplication.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
56

7+
@EnableJpaAuditing
68
@SpringBootApplication
79
public class TechForkApplication {
810

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.techfork.domain.activity.entity;
2+
3+
import com.techfork.domain.post.entity.Post;
4+
import com.techfork.domain.user.entity.User;
5+
import com.techfork.global.common.BaseEntity;
6+
import jakarta.persistence.*;
7+
import lombok.AccessLevel;
8+
import lombok.Getter;
9+
import lombok.NoArgsConstructor;
10+
11+
import java.time.LocalDateTime;
12+
13+
@Entity
14+
@Table(
15+
name = "read_posts",
16+
uniqueConstraints = {
17+
@UniqueConstraint(columnNames = {"user_id", "post_id"})
18+
}
19+
)
20+
@Getter
21+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
22+
public class ReadPost extends BaseEntity {
23+
24+
@Column(nullable = false)
25+
private LocalDateTime readAt;
26+
27+
private Integer readDurationSeconds;
28+
29+
@ManyToOne(fetch = FetchType.LAZY)
30+
@JoinColumn(name = "user_id", nullable = false)
31+
private User user;
32+
33+
@ManyToOne(fetch = FetchType.LAZY)
34+
@JoinColumn(name = "post_id", nullable = false)
35+
private Post post;
36+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.techfork.domain.activity.entity;
2+
3+
import com.techfork.domain.post.entity.Post;
4+
import com.techfork.domain.user.entity.User;
5+
import com.techfork.global.common.BaseEntity;
6+
import jakarta.persistence.*;
7+
import lombok.AccessLevel;
8+
import lombok.Getter;
9+
import lombok.NoArgsConstructor;
10+
11+
import java.time.LocalDateTime;
12+
13+
@Entity
14+
@Table(
15+
name = "scrap_posts",
16+
uniqueConstraints = {
17+
@UniqueConstraint(columnNames = {"user_id", "post_id"})
18+
}
19+
)
20+
@Getter
21+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
22+
public class ScrabPost extends BaseEntity {
23+
24+
private LocalDateTime scrappedAt;
25+
26+
@ManyToOne(fetch = FetchType.LAZY)
27+
@JoinColumn(name = "user_id", nullable = false)
28+
private User user;
29+
30+
@ManyToOne(fetch = FetchType.LAZY)
31+
@JoinColumn(name = "post_id", nullable = false)
32+
private Post post;
33+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.techfork.domain.notification.entity;
2+
3+
import com.techfork.domain.user.entity.User;
4+
import com.techfork.global.common.BaseTimeEntity;
5+
import jakarta.persistence.*;
6+
import lombok.AccessLevel;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
10+
@Entity
11+
@Getter
12+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
13+
public class NotificationToken extends BaseTimeEntity {
14+
15+
@Column(nullable = false, length = 500)
16+
private String token;
17+
18+
@Column(nullable = false)
19+
private Boolean isActive = true;
20+
21+
@OneToOne(fetch = FetchType.LAZY)
22+
@JoinColumn(name = "user_id")
23+
private User user;
24+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.techfork.domain.post.document;
2+
3+
public class PostDocument {
4+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.techfork.domain.post.document;
2+
3+
import jakarta.persistence.Id;
4+
import lombok.Builder;
5+
import lombok.Getter;
6+
7+
public class PostVector {
8+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.techfork.domain.post.entity;
2+
3+
import com.techfork.global.common.BaseEntity;
4+
import jakarta.persistence.*;
5+
import lombok.AccessLevel;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
9+
@Entity
10+
@Table(name = "keywords")
11+
@Getter
12+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
13+
public class Keyword extends BaseEntity {
14+
15+
@Column(unique = true, nullable = false, length = 100)
16+
private String keyword;
17+
18+
@ManyToOne(fetch = FetchType.LAZY)
19+
@JoinColumn(name = "post_id", nullable = false)
20+
private Post post;
21+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.techfork.domain.post.entity;
2+
3+
import com.techfork.domain.source.entity.TechBlog;
4+
import com.techfork.global.common.BaseEntity;
5+
import jakarta.persistence.*;
6+
import lombok.AccessLevel;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
10+
import java.time.LocalDateTime;
11+
12+
@Entity
13+
@Table(name = "posts")
14+
@Getter
15+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
16+
public class Post extends BaseEntity {
17+
18+
@Column(nullable = false, length = 500)
19+
private String title;
20+
21+
@Column(columnDefinition = "TEXT")
22+
private String fullContent;
23+
24+
@Column(nullable = false)
25+
private String company;
26+
27+
@Column(unique = true, nullable = false, length = 1000)
28+
private String url;
29+
30+
@Column(nullable = false)
31+
private LocalDateTime publishedAt;
32+
33+
@Column(nullable = false)
34+
private LocalDateTime crawledAt;
35+
36+
@ManyToOne(fetch = FetchType.LAZY)
37+
@JoinColumn(name = "tech_blog_id", nullable = false)
38+
private TechBlog techBlog;
39+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.techfork.domain.recommendation.entity;
2+
3+
import com.techfork.domain.post.entity.Post;
4+
import com.techfork.domain.user.entity.User;
5+
import com.techfork.global.common.BaseEntity;
6+
import jakarta.persistence.*;
7+
import lombok.AccessLevel;
8+
import lombok.Getter;
9+
import lombok.NoArgsConstructor;
10+
11+
import java.time.LocalDateTime;
12+
13+
@Entity
14+
@Table(name = "recommended_posts")
15+
@Getter
16+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
17+
public class RecommendedPost extends BaseEntity {
18+
19+
@Column(nullable = false)
20+
private Double similarityScore;
21+
22+
private LocalDateTime recommendedAt;
23+
24+
@ManyToOne(fetch = FetchType.LAZY)
25+
@JoinColumn(name = "user_id", nullable = false)
26+
private User user;
27+
28+
@ManyToOne(fetch = FetchType.LAZY)
29+
@JoinColumn(name = "post_id", nullable = false)
30+
private Post post;
31+
}

0 commit comments

Comments
 (0)