class item_search_repository

internal  
 

Item search repository (query engine helper).

Responsibilities:

  • Compile WHERE + JOIN SQL safely for complex search criteria
  • Execute queries with pagination
  • Bulk-load metadata for search results
  • Delegate hydration to Mapper

Constants

private TABLE

private TABLE_META

Methods

__construct(item_mapper $mapper, sql_generator $generator)

Constructor.

array
run_query(array $where, array $meta, array $joins, array|null $select, int|null $page, int|null $per_page, string|null $sort = null)

Run a composed SQL query for item search.

int
count_query(array $where, array $meta, array $joins)

Count results for pagination (same WHERE/JOIN logic).

array
load_metadata_bulk(array $itemids, array $keys)

Load metadata for multiple items in one query.

hydrate_domain(stdClass $record, array $metadata, string $domain_class)

Convert DB row + metadata → Domain object.

Details

at line 51
__construct(item_mapper $mapper, sql_generator $generator)

Constructor.

Parameters

item_mapper $mapper
sql_generator $generator

at line 71
array run_query(array $where, array $meta, array $joins, array|null $select, int|null $page, int|null $per_page, string|null $sort = null)

Run a composed SQL query for item search.

Parameters

array $where

Main table filters

array $meta

Metadata filters

array $joins

Custom JOINs

array|null $select

Custom SELECT columns

int|null $page

Pagination offset (0-based)

int|null $per_page

Items per page

string|null $sort

SQL Order By clause

Return Value

array

Records found

Exceptions

dml_exception

at line 99
int count_query(array $where, array $meta, array $joins)

Count results for pagination (same WHERE/JOIN logic).

Parameters

array $where

Main table filters

array $meta

Metadata filters

array $joins

Custom JOINs

Return Value

int

Total rows matching filters

Exceptions

dml_exception

at line 117
array load_metadata_bulk(array $itemids, array $keys)

Load metadata for multiple items in one query.

Solves N+1 problem.

Parameters

array $itemids

Item IDs to fetch metadata for

array $keys

Metadata keys to include

Return Value

array

Map of itemid => [key => value]

Exceptions

dml_exception

at line 152
item_interface hydrate_domain(stdClass $record, array $metadata, string $domain_class)

Convert DB row + metadata → Domain object.

Delegates to the Mapper to ensure the correct Domain Class is instantiated.

Parameters

stdClass $record

Raw DB record

array $metadata

Metadata array

string $domain_class

Target entity class hint (unused here)

Return Value

item_interface

Hydrated domain item