Skip to content

Commit a09c9ad

Browse files
authored
Merge pull request #4 from Cotatus/feature/3-entity
Feat: 엔티티 클래스 작성
2 parents c336bad + 2cfb643 commit a09c9ad

File tree

7 files changed

+220
-16
lines changed

7 files changed

+220
-16
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,6 @@ out/
3737
.vscode/
3838
docker-compose.yml
3939
/src/main/resources/application-local.properties
40-
/src/main/resources/application.properties
40+
/src/main/resources/application.properties
41+
/.claude
42+
/.codetracker
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.server.cotatus.entity;
2+
3+
import jakarta.persistence.*;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
import org.springframework.data.annotation.CreatedDate;
9+
import org.springframework.data.annotation.LastModifiedDate;
10+
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
11+
12+
import java.time.LocalDateTime;
13+
import java.util.ArrayList;
14+
import java.util.List;
15+
16+
@Entity
17+
@Getter
18+
@Builder
19+
@NoArgsConstructor
20+
@AllArgsConstructor
21+
@EntityListeners(AuditingEntityListener.class)
22+
public class Alert {
23+
24+
@Id
25+
@GeneratedValue(strategy = GenerationType.IDENTITY)
26+
private Long id;
27+
28+
@ManyToOne(fetch = FetchType.LAZY)
29+
@JoinColumn(name = "coin_id", nullable = false)
30+
private Coin coin;
31+
32+
@Column(nullable = false, length = 500)
33+
private String message;
34+
35+
@CreatedDate
36+
@Column(name = "created_at", nullable = false)
37+
private LocalDateTime createdAt;
38+
39+
@LastModifiedDate
40+
@Column(name = "updated_at", nullable = false)
41+
private LocalDateTime updatedAt;
42+
43+
44+
@Builder.Default
45+
@OneToMany(mappedBy = "alert", cascade = CascadeType.ALL, orphanRemoval = true)
46+
private List<News> newsList = new ArrayList<>();
47+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.server.cotatus.entity;
2+
3+
import jakarta.persistence.*;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
import org.springframework.data.annotation.CreatedDate;
9+
import org.springframework.data.annotation.LastModifiedDate;
10+
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
11+
12+
import java.time.LocalDateTime;
13+
import java.util.ArrayList;
14+
import java.util.List;
15+
16+
@Entity
17+
@Getter
18+
@Builder
19+
@NoArgsConstructor
20+
@AllArgsConstructor
21+
@EntityListeners(AuditingEntityListener.class)
22+
public class Coin {
23+
24+
@Id
25+
@GeneratedValue(strategy = GenerationType.IDENTITY)
26+
private Long id;
27+
28+
@Column(nullable = false, length = 100, unique = true)
29+
private String name;
30+
31+
@CreatedDate
32+
@Column(name = "created_at", nullable = false)
33+
private LocalDateTime createdAt;
34+
35+
@LastModifiedDate
36+
@Column(name = "updated_at", nullable = false)
37+
private LocalDateTime updatedAt;
38+
39+
40+
@Builder.Default
41+
@OneToMany(mappedBy = "coin", cascade = CascadeType.ALL, orphanRemoval = true)
42+
private List<EmotionalIndex> emotionalIndexList = new ArrayList<>();
43+
44+
@Builder.Default
45+
@OneToMany(mappedBy = "coin", cascade = CascadeType.ALL, orphanRemoval = true)
46+
private List<News> newsList = new ArrayList<>();
47+
48+
@Builder.Default
49+
@OneToMany(mappedBy = "coin", cascade = CascadeType.ALL, orphanRemoval = true)
50+
private List<Alert> alertList = new ArrayList<>();
51+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.server.cotatus.entity;
2+
3+
import com.server.cotatus.entity.enums.ChangeDirection;
4+
import jakarta.persistence.*;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
import org.springframework.data.annotation.CreatedDate;
10+
import org.springframework.data.annotation.LastModifiedDate;
11+
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
12+
13+
import java.math.BigDecimal;
14+
import java.time.LocalDateTime;
15+
import java.util.ArrayList;
16+
import java.util.List;
17+
18+
@Entity
19+
@Getter
20+
@Builder
21+
@NoArgsConstructor
22+
@AllArgsConstructor
23+
@EntityListeners(AuditingEntityListener.class)
24+
public class EmotionalIndex {
25+
26+
@Id
27+
@GeneratedValue(strategy = GenerationType.IDENTITY)
28+
private Long id;
29+
30+
@ManyToOne(fetch = FetchType.LAZY)
31+
@JoinColumn(name = "coin_id", nullable = false)
32+
private Coin coin;
33+
34+
@Column(name = "value", nullable = false, precision = 5, scale = 4)
35+
private BigDecimal value;
36+
37+
@Enumerated(EnumType.STRING)
38+
@Column(name = "change_direction", nullable = false, length = 10)
39+
private ChangeDirection changeDirection;
40+
41+
@CreatedDate
42+
@Column(name = "created_at", nullable = false)
43+
private LocalDateTime createdAt;
44+
45+
@LastModifiedDate
46+
@Column(name = "updated_at", nullable = false)
47+
private LocalDateTime updatedAt;
48+
49+
50+
@Builder.Default
51+
@OneToMany(mappedBy = "emotionalIndex", cascade = CascadeType.ALL, orphanRemoval = true)
52+
private List<News> newsList = new ArrayList<>();
53+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.server.cotatus.entity;
2+
3+
import jakarta.persistence.*;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
import org.springframework.data.annotation.CreatedDate;
9+
import org.springframework.data.annotation.LastModifiedDate;
10+
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
11+
12+
import java.time.LocalDateTime;
13+
import java.util.ArrayList;
14+
import java.util.List;
15+
16+
@Entity
17+
@Getter
18+
@Builder
19+
@NoArgsConstructor
20+
@AllArgsConstructor
21+
@EntityListeners(AuditingEntityListener.class)
22+
public class News {
23+
24+
@Id
25+
@GeneratedValue(strategy = GenerationType.IDENTITY)
26+
private Long id;
27+
28+
@ManyToOne(fetch = FetchType.LAZY)
29+
@JoinColumn(name = "coin_id", nullable = false)
30+
private Coin coin;
31+
32+
@ManyToOne(fetch = FetchType.LAZY)
33+
@JoinColumn(name = "alert_id")
34+
private Alert alert;
35+
36+
@ManyToOne(fetch = FetchType.LAZY)
37+
@JoinColumn(name = "emotional_index_id")
38+
private EmotionalIndex emotionalIndex;
39+
40+
@Column(nullable = false, length = 500)
41+
private String title;
42+
43+
@Column(columnDefinition = "TEXT")
44+
private String content;
45+
46+
@Column(nullable = false, length = 1000)
47+
private String url;
48+
49+
@Column(name = "published_at", nullable = false)
50+
private LocalDateTime publishedAt;
51+
52+
@CreatedDate
53+
@Column(name = "created_at", nullable = false)
54+
private LocalDateTime createdAt;
55+
56+
@LastModifiedDate
57+
@Column(name = "updated_at", nullable = false)
58+
private LocalDateTime updatedAt;
59+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.server.cotatus.entity.enums;
2+
3+
public enum ChangeDirection {
4+
RISE, // 상승
5+
DECLINE, // 하락
6+
STABLE // 변동 X
7+
}

src/main/resources/application.properties

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

0 commit comments

Comments
 (0)