Update book table to cintain extra info

This commit is contained in:
Tyler
2020-12-27 04:29:52 -05:00
parent 428213d49f
commit 58e27a38ad
8 changed files with 25351 additions and 3 deletions

View File

@ -7,6 +7,7 @@ use App\Models\Book;
use App\Models\Location;
use App\Services\BookInformation\BookLookupService;
use App\Services\BookInformation\GoogleBooks;
use Carbon\Carbon;
use GuzzleHttp\Client;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
@ -74,13 +75,25 @@ class MainController extends Controller {
$res = $service->lookup($item['barcode']);
if (!empty($res)) {
if ($thumbnail = data_get('images.thumbnail', $res)) {
if ($thumbnail = data_get($res, 'images.thumbnail')) {
$file = $this->downloadFile($thumbnail);
$book->attach('thumbnail', $file);
$attachment = $book->attach($file, [
'key' => 'thumbnail'
]);
$attachment->filename = 'thumbnail.jpg';
$attachment->save();
}
$book->description = $res->description;
$book->published_date = Carbon::parse($res->published_date);
$book->pages = $res->pages;
$book->save();
}
}
return redirect()->route('locations.show', $location->id);
}
/**

View File

@ -22,6 +22,10 @@ class Book extends Model {
'location_id', 'barcode', 'name',
];
protected $casts = [
'published_date' => 'datetime:Y-m-d'
];
public function authors() {
return $this->belongsToMany(Author::class, 'book_authors');
}
@ -34,13 +38,24 @@ class Book extends Model {
'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',
]
]
],
'description' => [
'type' => 'text',
'fields' => [
'raw' => [
'type' => 'keyword',
]
]
],
'published_date' => [
'type' => 'date',
'format' => 'yyyy-MM-dd'
]
]
];
}

View File

@ -26,6 +26,9 @@ class GoogleBooks implements BookLookupService {
'title' => $volume->getTitle(),
'authors' => $volume->getAuthors(),
'images' => $volume->getImageLinks(),
'description' => $volume->getDescription(),
'published_date' => $volume->getPublishedDate(),
'pages' => $volume->getPageCount()
];
}
}