<?php

declare(strict_types=1);

namespace Kylin\Library\Models;

use Illuminate\Database\Eloquent\Relations\HasMany;
use Kylin\Core\Models\BaseModel;

/**
 * 图书模型
 *
 * 依据《公共图书馆法》第三十三条：妥善保护读者信息。
 * 依据《出版管理条例》第二十四条：ISBN 唯一性校验。
 *
 * @property int    $id
 * @property string $isbn          ISBN 号
 * @property string $title         书名
 * @property string $author        作者
 * @property string $publisher     出版社
 * @property string $publish_date  出版日期
 * @property string $category      分类
 * @property string $call_number   索书号
 * @property int    $total_copies  总馆藏数
 * @property int    $available_copies 可借数
 * @property string $status        状态
 */
class Book extends BaseModel
{
    protected $table = 'kylin_library_books';

    protected $fillable = [
        'isbn', 'title', 'author', 'publisher',
        'publish_date', 'category', 'call_number',
        'total_copies', 'available_copies', 'status',
    ];

    protected $casts = [
        'publish_date' => 'date',
        'total_copies' => 'integer',
        'available_copies' => 'integer',
    ];

    /**
     * 借阅记录
     */
    public function borrowRecords(): HasMany
    {
        return $this->hasMany(BorrowRecord::class, 'book_id');
    }
}