Merge remote-tracking branch 'origin/feature/autowired-database' into feature/autowired-database

This commit is contained in:
Krzysztof Płaczek
2025-05-15 11:14:31 +02:00
6 changed files with 28 additions and 20 deletions

View File

@@ -1,3 +1,3 @@
#!/usr/bin/env bash #!/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 "$@" bin/cli composer "$@"

View File

@@ -42,8 +42,8 @@ class CacheWarmCommand extends Command
$progress = new ProgressBar($output); $progress = new ProgressBar($output);
$progress->start(); $progress->start();
$products = Product::with([ $products = Product::with([
'price' => fn($query) => $query->orderBy('created_at', 'desc'), 'price' => fn($query) => $query->orderByDesc('created_at'),
'stock' => fn($query) => $query->orderBy('created_at', 'desc'), 'stock' => fn($query) => $query->orderByDesc('created_at'),
])->get(); ])->get();
$progress->setMaxSteps(count($products)); $progress->setMaxSteps(count($products));

View File

@@ -21,15 +21,13 @@ class ScrapeWebsite extends Command
{ {
private Client $client; private Client $client;
public function __construct(protected Capsule $database)
{
parent::__construct();
}
protected function configure(): void protected function configure(): void
{ {
$capsule = new Capsule;
$capsule->addConnection([
'driver' => 'sqlite',
'database' => __DIR__ . '/../../database.sqlite',
]);
$capsule->setAsGlobal();
$capsule->bootEloquent();
$this->client = new Client(); $this->client = new Client();
} }

View File

@@ -11,11 +11,7 @@ class BaseController extends AbstractController
{ {
protected Environment $twig; 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();
} }
} }

14
src/DatabaseFactory.php Normal file
View File

@@ -0,0 +1,14 @@
<?php
namespace Krzysiej\RyobiCrawler;
use Illuminate\Database\Capsule\Manager as Capsule;
class DatabaseFactory
{
public static function create(Capsule $capsule): void
{
$capsule->addConnection(['driver' => 'sqlite', 'database' => __DIR__ . '/../database.sqlite']);
$capsule->setAsGlobal();
$capsule->bootEloquent();
}
}

View File

@@ -2,6 +2,7 @@
namespace Krzysiej\RyobiCrawler; namespace Krzysiej\RyobiCrawler;
use Illuminate\Database\Capsule\Manager;
use Krzysiej\RyobiCrawler\Twig\AppExtension; use Krzysiej\RyobiCrawler\Twig\AppExtension;
use Symfony\Bundle\FrameworkBundle\FrameworkBundle; use Symfony\Bundle\FrameworkBundle\FrameworkBundle;
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait; use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
@@ -34,14 +35,13 @@ class Kernel extends BaseKernel
'secret' => 'S0ME_SECRET' 'secret' => 'S0ME_SECRET'
]); ]);
$services = $container->services()->defaults()->autowire()->autoconfigure(); $services = $container->services()->defaults()->autowire()->autoconfigure();
$services->load('Krzysiej\\RyobiCrawler\\Controller\\', __DIR__ . '/Controller/*'); $services->set(Manager::class)->configurator([DatabaseFactory::class, 'create']);
$services->load('Krzysiej\\RyobiCrawler\\Command\\', __DIR__ . '/Command/*')->tag('console.command'); $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('twig.extension.cache', AppExtension::class)->tag('twig.extension');
$services->set(CacheExtension::class)->tag('twig.extension'); $services->set(CacheExtension::class)->tag('twig.extension');
$services->set(FilesystemAdapter::class)->args([ $services->set(FilesystemAdapter::class)->args([
'', // namespace '$directory' => __DIR__ . '/../var/cache/twig_blocks'
0, // default lifetime
__DIR__ . '/../var/cache/twig_blocks' // custom path
]); ]);
$services->set('twig.runtime.cache', CacheRuntime::class)->args([new Reference(FilesystemAdapter::class)])->tag('twig.runtime'); $services->set('twig.runtime.cache', CacheRuntime::class)->args([new Reference(FilesystemAdapter::class)])->tag('twig.runtime');
} }