query_runner->value( 'SELECT COUNT(*) FROM ' . $this->tables->links() . ' links WHERE ' . $this->link_list_filter->where_clause( $query ) ); return (int) $count; } /** @return list */ public function page_of( LinkListQuery $query ): array { $page_request = $query->page_request; $page_limit = $this->query_runner->prepare( ' LIMIT %d OFFSET %d', $page_request->per_page, $page_request->offset() ); $rows = $this->query_runner->rows( 'SELECT ' . $this->tables->link_columns() . ' FROM ' . $this->tables->links() . ' links WHERE ' . $this->link_list_filter->where_clause( $query ) . ' ORDER BY ' . $this->link_list_order->order_clause( $query ) . $page_limit ); $links = array(); foreach ( $rows as $row ) { $links[] = $this->link_row_mapper->to_link( $row ); } return $links; } }