package ru.mcs.sopds.entity;
import jakarta.persistence.*;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.Set;
@Data
@Entity
@Table(name = "books")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "title", nullable = false)
private String title;
@Column(name = "file_name")
private String fileName;
@Column(name = "path")
private String path;
@Column(name = "file_size")
private Long fileSize;
@Column(name = "time", columnDefinition = "TIMESTAMP")
private LocalDateTime time;
@Column(name = "lang", length = 3)
private String lang;
@Column(name = "doc_date", length = 50)
private String docDate;
@Column(name = "format", length = 10)
private String format;
@Column(name = "cat_type", nullable = false)
private Integer catType = 0;
@Column(name = "register_date", columnDefinition = "TIMESTAMP")
private LocalDateTime registerDate;
@ManyToMany
@JoinTable(
name = "book_author",
joinColumns = @JoinColumn(name = "book_id"),
inverseJoinColumns = @JoinColumn(name = "author_id")
)
private Set<Author> authors = new HashSet<>();
@ManyToMany
@JoinTable(
name = "book_genre",
joinColumns = @JoinColumn(name = "book_id"),
inverseJoinColumns = @JoinColumn(name = "genre_id")
)
private Set<Genre> genres = new HashSet<>();
@ManyToOne
@JoinColumn(name = "series_id")
private Series series;
@PrePersist
protected void onCreate() {
registerDate = LocalDateTime.now();
if (time == null) {
time = LocalDateTime.now();
}
}
}