39 lines
1.3 KiB
PHP
39 lines
1.3 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace App\Repositories;
|
|
|
|
use App\Contracts\Search;
|
|
use App\Dto\Builder\ProjectFeedback as ProjectFeedbackBuilderDto;
|
|
use App\Models\Project;
|
|
use App\Models\ProjectFeedback;
|
|
use App\Services\ProjectFeedback\BuilderCommand;
|
|
use App\Services\Search\CreateSearchInstanceCommand;
|
|
|
|
final readonly class ProjectFeedbackRepository
|
|
{
|
|
public function __construct(
|
|
private CreateSearchInstanceCommand $createSearchInstanceCommand,
|
|
private BuilderCommand $builderCommand
|
|
) { }
|
|
|
|
public function getFeedbacks(ProjectFeedbackBuilderDto $projectFeedbackBuilderDto, array $with = []): Search
|
|
{
|
|
$query = $this->builderCommand->execute(
|
|
query: ProjectFeedback::query()->with($with),
|
|
projectFeedbackBuilderDto: $projectFeedbackBuilderDto
|
|
);
|
|
|
|
return $this->createSearchInstanceCommand->execute($query);
|
|
}
|
|
|
|
public function getFeedbacksByProject(Project $project, ProjectFeedbackBuilderDto $projectFeedbackBuilderDto, array $with = []): Search
|
|
{
|
|
$query = $this->builderCommand->execute(
|
|
query: $project->feedbacks()->with($with),
|
|
projectFeedbackBuilderDto: $projectFeedbackBuilderDto
|
|
);
|
|
|
|
return $this->createSearchInstanceCommand->execute($query);
|
|
}
|
|
}
|