diff --git a/bin/composer b/bin/composer index a65407d..f7ab9e6 100755 --- a/bin/composer +++ b/bin/composer @@ -1,3 +1,3 @@ #!/usr/bin/env bash -[ -z "$1" ] && echo "Please specify a Composer command (ex. install)" && exit +[ -z "$1" ] && bin/cli composer list && exit bin/cli composer "$@" \ No newline at end of file diff --git a/src/Command/CacheWarmCommand.php b/src/Command/CacheWarmCommand.php index 450e5e2..4c8d167 100644 --- a/src/Command/CacheWarmCommand.php +++ b/src/Command/CacheWarmCommand.php @@ -42,8 +42,8 @@ class CacheWarmCommand extends Command $progress = new ProgressBar($output); $progress->start(); $products = Product::with([ - 'price' => fn($query) => $query->orderBy('created_at', 'desc'), - 'stock' => fn($query) => $query->orderBy('created_at', 'desc'), + 'price' => fn($query) => $query->orderByDesc('created_at'), + 'stock' => fn($query) => $query->orderByDesc('created_at'), ])->get(); $progress->setMaxSteps(count($products)); diff --git a/src/Command/ScrapeWebsite.php b/src/Command/ScrapeWebsite.php index f6be3fe..722856a 100644 --- a/src/Command/ScrapeWebsite.php +++ b/src/Command/ScrapeWebsite.php @@ -21,15 +21,13 @@ class ScrapeWebsite extends Command { private Client $client; + public function __construct(protected Capsule $database) + { + parent::__construct(); + } + protected function configure(): void { - $capsule = new Capsule; - $capsule->addConnection([ - 'driver' => 'sqlite', - 'database' => __DIR__ . '/../../database.sqlite', - ]); - $capsule->setAsGlobal(); - $capsule->bootEloquent(); $this->client = new Client(); } diff --git a/src/Controller/BaseController.php b/src/Controller/BaseController.php index fb6f2ff..dfccd17 100644 --- a/src/Controller/BaseController.php +++ b/src/Controller/BaseController.php @@ -11,11 +11,7 @@ class BaseController extends AbstractController { protected Environment $twig; - public function __construct(protected FilesystemAdapter $cache) + public function __construct(protected FilesystemAdapter $cache, protected Capsule $database) { - $capsule = new Capsule; - $capsule->addConnection(['driver' => 'sqlite', 'database' => __DIR__ . '/../../database.sqlite']); - $capsule->setAsGlobal(); - $capsule->bootEloquent(); } } diff --git a/src/DatabaseFactory.php b/src/DatabaseFactory.php new file mode 100644 index 0000000..0702d80 --- /dev/null +++ b/src/DatabaseFactory.php @@ -0,0 +1,14 @@ +addConnection(['driver' => 'sqlite', 'database' => __DIR__ . '/../database.sqlite']); + $capsule->setAsGlobal(); + $capsule->bootEloquent(); + } +} \ No newline at end of file diff --git a/src/Kernel.php b/src/Kernel.php index 2e0f999..4293331 100644 --- a/src/Kernel.php +++ b/src/Kernel.php @@ -2,6 +2,7 @@ namespace Krzysiej\RyobiCrawler; +use Illuminate\Database\Capsule\Manager; use Krzysiej\RyobiCrawler\Twig\AppExtension; use Symfony\Bundle\FrameworkBundle\FrameworkBundle; use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait; @@ -34,14 +35,13 @@ class Kernel extends BaseKernel 'secret' => 'S0ME_SECRET' ]); $services = $container->services()->defaults()->autowire()->autoconfigure(); - $services->load('Krzysiej\\RyobiCrawler\\Controller\\', __DIR__ . '/Controller/*'); - $services->load('Krzysiej\\RyobiCrawler\\Command\\', __DIR__ . '/Command/*')->tag('console.command'); + $services->set(Manager::class)->configurator([DatabaseFactory::class, 'create']); + $services->load('Krzysiej\\RyobiCrawler\\', __DIR__ ) + ->exclude('../src/{Models,Twig,DatabaseFactory.php,Kernel.php}'); $services->set('twig.extension.cache', AppExtension::class)->tag('twig.extension'); $services->set(CacheExtension::class)->tag('twig.extension'); $services->set(FilesystemAdapter::class)->args([ - '', // namespace - 0, // default lifetime - __DIR__ . '/../var/cache/twig_blocks' // custom path + '$directory' => __DIR__ . '/../var/cache/twig_blocks' ]); $services->set('twig.runtime.cache', CacheRuntime::class)->args([new Reference(FilesystemAdapter::class)])->tag('twig.runtime'); }