<?php

namespace App\Models;

use App\Services\Search\BookConfigurator;
use Bnb\Laravel\Attachments\HasAttachment;
use Illuminate\Database\Eloquent\Model;
use ScoutElastic\Searchable;

class Book extends Model {

    use Searchable, HasAttachment;

    protected $indexConfigurator = BookConfigurator::class;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'location_id', 'barcode', 'name',
    ];

    public function authors() {
        return $this->belongsToMany(Author::class, 'book_authors');
    }

    public function location() {
        return $this->belongsTo(Location::class);
    }

    protected $mapping = [
        'properties' => [
            'name' => [
                'type' => 'text',
                // Also you can configure multi-fields, more details you can find here https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html
                'fields' => [
                    'raw' => [
                        'type' => 'keyword',
                    ]
                ]
            ],
        ]
    ];
}
