Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 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
46 changes: 46 additions & 0 deletions src/main/java/eatda/domain/article/Article.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package eatda.domain.article;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import java.time.LocalDateTime;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Table(name = "article")
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Article {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(nullable = false)
private String title;

@Column(nullable = false)
private String subtitle;

@Column(name = "article_url", nullable = false, length = 511)
private String articleUrl;

@Column(name = "image_key", nullable = false, length = 511)
private String imageKey;

@Column(name = "created_at", nullable = false)
private LocalDateTime createdAt;

public Article(String title, String subtitle, String articleUrl, String imageKey) {
this.title = title;
this.subtitle = subtitle;
this.articleUrl = articleUrl;
this.imageKey = imageKey;
this.createdAt = LocalDateTime.now();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[제안]

createdAt 필드는 아래처럼 @PrePersist를 활용하면 JPA 생명주기와도 맞고 테스트도 더 수월할 것 같아요!

@PrePersist
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
    }

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

좋은 아이디어라고 생각합니다.
모든 Entity마다 해당 메서드가 있는 것은 불편하다고 생각해서 AuditingEntity로 해당 부분을 분리했습니다. 확인 한 번 부탁드립니다!

}
}
56 changes: 0 additions & 56 deletions src/main/java/eatda/domain/bookmark/Bookmark.java

This file was deleted.

5 changes: 5 additions & 0 deletions src/main/java/eatda/domain/member/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import java.time.LocalDateTime;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand Down Expand Up @@ -41,12 +42,16 @@ public class Member {
@Column(name = "opt_in_marketing")
private Boolean optInMarketing;

@Column(name = "created_at", nullable = false)
private LocalDateTime createdAt;

public Member(String socialId, String email, String nickname) {
validateSocialId(socialId);
validateEmail(email);
this.socialId = socialId;
this.email = email;
this.nickname = nickname;
this.createdAt = LocalDateTime.now();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기도 @PrePersist를 사용하는게 어떨까요???

}

public Member(
Expand Down
45 changes: 0 additions & 45 deletions src/main/java/eatda/domain/menu/Discount.java

This file was deleted.

74 changes: 0 additions & 74 deletions src/main/java/eatda/domain/menu/Menu.java

This file was deleted.

33 changes: 0 additions & 33 deletions src/main/java/eatda/domain/menu/Price.java

This file was deleted.

74 changes: 74 additions & 0 deletions src/main/java/eatda/domain/store/Cheer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package eatda.domain.store;

import eatda.domain.member.Member;
import eatda.exception.BusinessErrorCode;
import eatda.exception.BusinessException;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import java.time.LocalDateTime;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Table(name = "cheer")
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Cheer {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id", nullable = false)
private Member member;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "store_id", nullable = false)
private Store store;

@Column(nullable = false, columnDefinition = "TEXT")
private String description;

@Column(name = "image_key", nullable = false, length = 511)
private String imageKey;

@Column(name = "is_admin", nullable = false)
private boolean isAdmin;

@Column(name = "created_at", nullable = false)
private LocalDateTime createdAt;

public Cheer(Long id, Member member, Store store, String description, String imageKey) {
validateDescription(description);
validateImageKey(imageKey);
this.id = id;
this.member = member;
this.store = store;
this.description = description;
this.imageKey = imageKey;

this.isAdmin = false;
this.createdAt = LocalDateTime.now();
}

private void validateDescription(String description) {
if (description == null || description.isBlank()) {
throw new BusinessException(BusinessErrorCode.INVALID_CHEER_DESCRIPTION);
}
}

private void validateImageKey(String imageKey) {
if (imageKey != null && imageKey.isBlank()) {
throw new BusinessException(BusinessErrorCode.INVALID_CHEER_IMAGE_KEY);
}
}
}
Loading