Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,15 @@ dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.13'

// implementation 'org.springframework.boot:spring-boot-starter-batch'
// testImplementation 'org.springframework.batch:spring-batch-test'

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

// developmentOnly 'org.springframework.boot:spring-boot-docker-compose'
// developmentOnly 'org.springframework.ai:spring-ai-spring-boot-docker-compose'

// implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
// implementation 'org.springframework.ai:spring-ai-advisors-vector-store'
// implementation 'org.springframework.ai:spring-ai-starter-vector-store-elasticsearch'
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/techfork/TechForkApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@EnableJpaAuditing
@SpringBootApplication
public class TechForkApplication {

Expand Down
36 changes: 36 additions & 0 deletions src/main/java/com/techfork/domain/activity/entity/ReadPost.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.techfork.domain.activity.entity;

import com.techfork.domain.post.entity.Post;
import com.techfork.domain.user.entity.User;
import com.techfork.global.common.BaseEntity;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Entity
@Table(
name = "read_posts",
uniqueConstraints = {
@UniqueConstraint(columnNames = {"user_id", "post_id"})
}
)
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class ReadPost extends BaseEntity {

@Column(nullable = false)
private LocalDateTime readAt;

private Integer readDurationSeconds;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
private User user;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id", nullable = false)
private Post post;
}
33 changes: 33 additions & 0 deletions src/main/java/com/techfork/domain/activity/entity/ScrabPost.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.techfork.domain.activity.entity;

import com.techfork.domain.post.entity.Post;
import com.techfork.domain.user.entity.User;
import com.techfork.global.common.BaseEntity;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Entity
@Table(
name = "scrap_posts",
uniqueConstraints = {
@UniqueConstraint(columnNames = {"user_id", "post_id"})
}
)
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class ScrabPost extends BaseEntity {

private LocalDateTime scrappedAt;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
private User user;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id", nullable = false)
private Post post;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.techfork.domain.notification.entity;

import com.techfork.domain.user.entity.User;
import com.techfork.global.common.BaseTimeEntity;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class NotificationToken extends BaseTimeEntity {

@Column(nullable = false, length = 500)
private String token;

@Column(nullable = false)
private Boolean isActive = true;

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.techfork.domain.post.document;

public class PostDocument {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.techfork.domain.post.document;

import jakarta.persistence.Id;
import lombok.Builder;
import lombok.Getter;

public class PostVector {
}
21 changes: 21 additions & 0 deletions src/main/java/com/techfork/domain/post/entity/Keyword.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.techfork.domain.post.entity;

import com.techfork.global.common.BaseEntity;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Table(name = "keywords")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Keyword extends BaseEntity {

@Column(unique = true, nullable = false, length = 100)
private String keyword;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id", nullable = false)
private Post post;
}
39 changes: 39 additions & 0 deletions src/main/java/com/techfork/domain/post/entity/Post.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.techfork.domain.post.entity;

import com.techfork.domain.source.entity.TechBlog;
import com.techfork.global.common.BaseEntity;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Entity
@Table(name = "posts")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Post extends BaseEntity {

@Column(nullable = false, length = 500)
private String title;

@Column(columnDefinition = "TEXT")
private String fullContent;

@Column(nullable = false)
private String company;

@Column(unique = true, nullable = false, length = 1000)
private String url;

@Column(nullable = false)
private LocalDateTime publishedAt;

@Column(nullable = false)
private LocalDateTime crawledAt;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "tech_blog_id", nullable = false)
private TechBlog techBlog;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.techfork.domain.recommendation.entity;

import com.techfork.domain.post.entity.Post;
import com.techfork.domain.user.entity.User;
import com.techfork.global.common.BaseEntity;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Entity
@Table(name = "recommended_posts")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class RecommendedPost extends BaseEntity {

@Column(nullable = false)
private Double similarityScore;

private LocalDateTime recommendedAt;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
private User user;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id", nullable = false)
private Post post;
}
26 changes: 26 additions & 0 deletions src/main/java/com/techfork/domain/search/entity/SearchHistory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.techfork.domain.search.entity;

import com.techfork.domain.user.entity.User;
import com.techfork.global.common.BaseEntity;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Entity
@Table(name = "search_histories")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class SearchHistory extends BaseEntity {

@Column(nullable = false, length = 200)
private String searchWord;

private LocalDateTime searchedAt;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
private User user;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.techfork.domain.source.entity;

import com.techfork.global.common.BaseTimeEntity;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Table(name = "crawling_histories")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class CrawlingHistory extends BaseTimeEntity {

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "tech_blog_id", nullable = false)
private TechBlog techBlog;
}
32 changes: 32 additions & 0 deletions src/main/java/com/techfork/domain/source/entity/TechBlog.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.techfork.domain.source.entity;

import com.techfork.global.common.BaseTimeEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Entity
@Table(name = "tech_blogs")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class TechBlog extends BaseTimeEntity {

@Column(nullable = false, length = 100)
private String companyName;

@Column(unique = true, nullable = false, length = 500)
private String blogUrl;

@Column(unique = true, nullable = false, length = 500)
private String rssUrl;

@Column(length = 500)
private String logoUrl;

private LocalDateTime lastCrawledAt;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.techfork.domain.user.document;

public class UserProfileDocument {
}
23 changes: 23 additions & 0 deletions src/main/java/com/techfork/domain/user/entity/Interest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.techfork.domain.user.entity;

import com.techfork.domain.user.enums.EInterestCategory;
import com.techfork.global.common.BaseEntity;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Table(name = "interests")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Interest extends BaseEntity {

@Enumerated(EnumType.STRING)
@Column(nullable = false, length = 50)
private EInterestCategory category;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
private User user;
}
15 changes: 15 additions & 0 deletions src/main/java/com/techfork/domain/user/entity/User.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.techfork.domain.user.entity;

import com.techfork.global.common.BaseTimeEntity;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Table(name = "users")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class User extends BaseTimeEntity {
}
Loading