<?php

namespace App\Providers;

use App\Services\BookInformation\BookLookupService;
use App\Services\BookInformation\CachedService;
use App\Services\BookInformation\GoogleBooks;
use Illuminate\Pagination\Paginator;
use Schema;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider {
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot() {
        Schema::defaultStringLength(191);
        Paginator::useBootstrap();
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register() {
        $this->app->singleton(BookLookupService::class, function() {
            return new CachedService(new GoogleBooks());
        });
    }
}