package com.blog.web.models; import com.blog.web.dto.ArticleDto; import jakarta.persistence.*; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.UpdateTimestamp; import java.time.LocalDateTime; import java.util.Optional; @Entity public class Article { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private final long id; private String title; private String photoUrl; private String content; @CreationTimestamp private LocalDateTime createdOn; @UpdateTimestamp private LocalDateTime updatedOn; @ManyToOne @JoinColumn(name = "created_by", nullable = false) private UserEntity createdBy; public Article(long id, String title, String photoUrl, String content, UserEntity createdBy, LocalDateTime createdOn, LocalDateTime updatedOn) { this.id = id; this.title = title; this.photoUrl = photoUrl; this.content = content; this.createdBy = createdBy; this.createdOn = createdOn; this.updatedOn = updatedOn; } public Article(ArticleDto articleDto) { this.id = Optional.ofNullable(articleDto.getId()).orElse(0L); this.title = articleDto.getTitle(); this.photoUrl = articleDto.getPhotoUrl(); this.content = articleDto.getContent(); this.createdBy = articleDto.getCreatedBy(); this.createdOn = articleDto.getCreatedOn(); this.updatedOn = articleDto.getUpdatedOn(); } public Article() { this.id = 0; } public long getId() { return id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getPhotoUrl() { return photoUrl; } public void setPhotoUrl(String photoUrl) { this.photoUrl = photoUrl; } public LocalDateTime getCreatedOn() { return createdOn; } public void setCreatedOn(LocalDateTime createdOn) { this.createdOn = createdOn; } public LocalDateTime getUpdatedOn() { return updatedOn; } public void setUpdatedOn(LocalDateTime updatedOn) { this.updatedOn = updatedOn; } public UserEntity getCreatedBy() { return createdBy; } public void setCreatedBy(UserEntity createdBy) { this.createdBy = createdBy; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }