diff --git a/src/main/kotlin/org/library/book/domain/Book.kt b/src/main/kotlin/org/library/book/domain/Book.kt new file mode 100644 index 0000000..a399557 --- /dev/null +++ b/src/main/kotlin/org/library/book/domain/Book.kt @@ -0,0 +1,37 @@ +package org.library.book.domain + +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.Table +import org.library.core.domain.BaseEntity + +@Entity +@Table(name = "books") +class Book( + title: String, + author: String, + isbn: String?, +) : BaseEntity() { + + @Column(nullable = false) + var title: String = title + protected set + + @Column(nullable = false) + var author: String = author + protected set + + @Column + var isbn: String? = normalizeIsbn(isbn) + protected set + + init { + require(title.isNotBlank()) { "제목은 비어 있을 수 없습니다." } + require(author.isNotBlank()) { "저자는 비어 있을 수 없습니다." } + } + + companion object { + + fun normalizeIsbn(isbn: String?): String? = isbn?.trim()?.takeIf { it.isNotBlank() } + } +} diff --git a/src/main/kotlin/org/library/book/domain/BookRepository.kt b/src/main/kotlin/org/library/book/domain/BookRepository.kt new file mode 100644 index 0000000..3cde0d7 --- /dev/null +++ b/src/main/kotlin/org/library/book/domain/BookRepository.kt @@ -0,0 +1,6 @@ +package org.library.book.domain + +import org.springframework.data.jpa.repository.JpaRepository + +interface BookRepository : JpaRepository { +}