Newer
Older
simple-opds / src / main / java / ru / mcs / sopds / entity / Book.java
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();
        }
    }
}