Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
1 / 1
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3declare(strict_types=1);
4
5/** @license For full copyright and license information, please see the LICENSE.md file. */
6
7namespace App\Core\Search\Domain\Repository;
8
9defined('AMMONLY_APP') || exit('Direct script access is forbidden.');
10
11use App\Core\Engine\Domain\Model\FieldMetadata;
12use App\Core\Engine\Domain\Model\ModuleMetadata;
13use App\Core\Engine\Domain\Model\PermissionContext;
14use App\Core\Search\Domain\Model\SearchQuery;
15use App\Core\Search\Domain\Model\SearchResultGroup;
16
17/**
18 * Search Persistence Repository Interface.
19 *
20 * Defines contract for searching individual module records under RBAC constraints.
21 *
22 * @package App\Core\Search\Domain\Repository
23 */
24interface SearchRepositoryInterface
25{
26    /**
27     * Executes search query across a single module.
28     *
29     * @param ModuleMetadata       $module  Target module metadata.
30     * @param list<FieldMetadata>  $fields  Searchable fields for the module.
31     * @param SearchQuery          $query   Search query object.
32     * @param PermissionContext    $context Security context of actor.
33     * @return SearchResultGroup Module search results group.
34     */
35    public function searchModule(
36        ModuleMetadata    $module,
37        array             $fields,
38        SearchQuery       $query,
39        PermissionContext $context
40    ): SearchResultGroup;
41}