diff --git a/app/Scout/Typesense/Typesense.php b/app/Scout/Typesense/Typesense.php index 2698c448d..95c83f027 100644 --- a/app/Scout/Typesense/Typesense.php +++ b/app/Scout/Typesense/Typesense.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace App\Scout\Typesense; +use App\Concerns\Actions\Http\Api\AggregatesFields; +use App\Concerns\Actions\Http\Api\ConstrainsEagerLoads; use App\Enums\Http\Api\Paging\PaginationStrategy; use App\Http\Api\Criteria\Paging\Criteria as PagingCriteria; use App\Http\Api\Criteria\Sort\FieldCriteria; @@ -21,6 +23,9 @@ use Illuminate\Support\Collection; class Typesense extends Search { + use AggregatesFields; + use ConstrainsEagerLoads; + public function __construct(protected Model $model, Criteria $criteria) { parent::__construct($criteria); @@ -39,6 +44,13 @@ class Typesense extends Search /** @var \Laravel\Scout\Builder $builder */ /** @phpstan-ignore-next-line */ $builder = $model::search($this->criteria->getTerm()); + + $builder->query(function (EloquentBuilder $builder) use ($query, $schema) { + $this->withAggregates($builder, $query, $schema); + + $builder->with($this->constrainEagerLoads($query, $schema)); + }); + $scope = ScopeParser::parse($schema->type()); foreach ($query->getFilterCriteria() as $filter) { foreach ($schema->filters() as $schemaFilter) { diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 876f515fc..496abb4b9 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -10,7 +10,7 @@ services: command: > sh -c " find /public -mindepth 1 -maxdepth 1 -exec rm -rf {} + && - cp -a /app/public/. /public/ && + cp -r /app/public/. /public/ && exec php-fpm " ports: @@ -29,7 +29,7 @@ services: image: '${APP_IMAGE:-animethemes-server:local}' container_name: animethemes-queue restart: unless-stopped - command: php artisan queue:work --sleep=3 --tries=3 --timeout=120 --max-time=3600 --queue=default,discord + command: php artisan queue:work --sleep=3 --tries=3 --timeout=120 --max-time=3600 --queue=default,discord,optimize-image env_file: .env volumes: - laravel-storage:/app/storage