Skip to content

Commit

Permalink
[project-base][SSP-2465] Add search parameters to queries (#3298)
Browse files Browse the repository at this point in the history
  • Loading branch information
JanMolcik authored Aug 9, 2024
2 parents 0e32856 + acecb9f commit 43bfd57
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 17 deletions.
9 changes: 9 additions & 0 deletions storefront/components/Pages/Search/searchUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ export const useSearchProductsData = (totalProductCount?: number) => {
const currentSearchString = useCurrentSearchStringQuery();
const currentLoadMore = useCurrentLoadMoreQuery();
const mappedFilter = mapParametersFilter(currentFilter);
const parameters = mappedFilter?.parameters?.map((parameter) => parameter.parameter);

const previousLoadMoreRef = useRef(currentLoadMore);
const previousPageRef = useRef(currentPage);
Expand Down Expand Up @@ -99,6 +100,7 @@ export const useSearchProductsData = (totalProductCount?: number) => {
currentPage,
currentLoadMore,
userIdentifier,
parameters,
);

if (
Expand All @@ -125,6 +127,7 @@ export const useSearchProductsData = (totalProductCount?: number) => {
pageSize,
isAutocomplete: false,
userIdentifier,
parameters,
},
previousProductsFromCache,
);
Expand All @@ -145,6 +148,7 @@ const readProductsSearchFromCache = (
endCursor: string,
pageSize: number,
userIdentifier: string,
parameters?: string[] | null,
): TypeListedProductConnectionFragment | undefined => {
const dataFromCache = client.readQuery<TypeSearchProductsQuery, TypeSearchProductsQueryVariables>(
SearchProductsQueryDocument,
Expand All @@ -156,6 +160,7 @@ const readProductsSearchFromCache = (
pageSize,
isAutocomplete: false,
userIdentifier,
parameters,
},
)?.data?.productsSearch;

Expand All @@ -171,6 +176,7 @@ const getPreviousProductsFromCache = (
currentPage: number,
currentLoadMore: number,
userIdentifier: string,
parameters?: string[] | null,
) => {
let cachedPartOfProducts: TypeListedProductConnectionFragment['edges'] | undefined;
let iterationsCounter = currentLoadMore;
Expand All @@ -185,6 +191,7 @@ const getPreviousProductsFromCache = (
offsetEndCursor,
pageSize,
userIdentifier,
parameters,
);

if (productsSearchFromCache) {
Expand All @@ -210,6 +217,7 @@ export const useSearchQuery = (searchString: string | undefined) => {
const currentSort = useCurrentSortQuery();
const currentLoadMore = useCurrentLoadMoreQuery();
const mappedFilter = mapParametersFilter(currentFilter);
const parameters = mappedFilter?.parameters?.map((parameter) => parameter.parameter) ?? [];
const { pageSize, isMoreThanOnePage } = getPageSizeInfo(false, currentLoadMore);
const endCursor = getEndCursor(currentPage, isMoreThanOnePage ? undefined : currentLoadMore);
const client = useClient();
Expand All @@ -228,6 +236,7 @@ export const useSearchQuery = (searchString: string | undefined) => {
filter: mappedFilter,
orderingMode: currentSort,
pageSize,
parameters,
})
.then((searchResponse) => {
setSearchData(searchResponse.data);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export type TypeAutocompleteSearchQueryVariables = Types.Exact<{
maxCategoryCount: Types.InputMaybe<Types.Scalars['Int']['input']>;
isAutocomplete: Types.Scalars['Boolean']['input'];
userIdentifier: Types.Scalars['Uuid']['input'];
parameters?: Types.InputMaybe<Array<Types.Scalars['Uuid']['input']> | Types.Scalars['Uuid']['input']>;
}>;


Expand Down Expand Up @@ -98,25 +99,25 @@ export type TypeAutocompleteSearchQuery = { __typename?: 'Query', articlesSearch


export const AutocompleteSearchQueryDocument = gql`
query AutocompleteSearchQuery($search: String!, $maxProductCount: Int, $maxCategoryCount: Int, $isAutocomplete: Boolean!, $userIdentifier: Uuid!) {
query AutocompleteSearchQuery($search: String!, $maxProductCount: Int, $maxCategoryCount: Int, $isAutocomplete: Boolean!, $userIdentifier: Uuid!, $parameters: [Uuid!] = []) {
articlesSearch(
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier}
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier, parameters: $parameters}
) {
...SimpleArticleInterfaceFragment
}
brandSearch(
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier}
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier, parameters: $parameters}
) {
...SimpleBrandFragment
}
categoriesSearch(
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier}
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier, parameters: $parameters}
first: $maxCategoryCount
) {
...SimpleCategoryConnectionFragment
}
productsSearch: productsSearch(
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier}
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier, parameters: $parameters}
first: $maxProductCount
) {
orderingMode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export type TypeSearchProductsQueryVariables = Types.Exact<{
pageSize: Types.InputMaybe<Types.Scalars['Int']['input']>;
isAutocomplete: Types.Scalars['Boolean']['input'];
userIdentifier: Types.Scalars['Uuid']['input'];
parameters?: Types.InputMaybe<Array<Types.Scalars['Uuid']['input']> | Types.Scalars['Uuid']['input']>;
}>;


Expand Down Expand Up @@ -97,13 +98,13 @@ export type TypeSearchProductsQuery = { __typename?: 'Query', productsSearch: {


export const SearchProductsQueryDocument = gql`
query SearchProductsQuery($endCursor: String!, $orderingMode: ProductOrderingModeEnum, $filter: ProductFilter, $search: String!, $pageSize: Int, $isAutocomplete: Boolean!, $userIdentifier: Uuid!) {
query SearchProductsQuery($endCursor: String!, $orderingMode: ProductOrderingModeEnum, $filter: ProductFilter, $search: String!, $pageSize: Int, $isAutocomplete: Boolean!, $userIdentifier: Uuid!, $parameters: [Uuid!] = []) {
productsSearch(
after: $endCursor
orderingMode: $orderingMode
filter: $filter
first: $pageSize
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier}
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier, parameters: $parameters}
) {
orderingMode
defaultOrderingMode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,19 @@ query SearchProductsQuery(
$pageSize: Int
$isAutocomplete: Boolean!
$userIdentifier: Uuid!
$parameters: [Uuid!] = []
) {
productsSearch(
after: $endCursor
orderingMode: $orderingMode
filter: $filter
first: $pageSize
searchInput: { search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier }
searchInput: {
search: $search
isAutocomplete: $isAutocomplete
userIdentifier: $userIdentifier
parameters: $parameters
}
) {
orderingMode
defaultOrderingMode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export type TypeSearchQueryVariables = Types.Exact<{
orderingMode: Types.InputMaybe<Types.TypeProductOrderingModeEnum>;
filter: Types.InputMaybe<Types.TypeProductFilter>;
pageSize: Types.InputMaybe<Types.Scalars['Int']['input']>;
parameters?: Types.InputMaybe<Array<Types.Scalars['Uuid']['input']> | Types.Scalars['Uuid']['input']>;
}>;


Expand Down Expand Up @@ -100,19 +101,19 @@ export type TypeSearchQuery = { __typename?: 'Query', articlesSearch: Array<{ __


export const SearchQueryDocument = gql`
query SearchQuery($search: String!, $isAutocomplete: Boolean!, $userIdentifier: Uuid!, $endCursor: String!, $orderingMode: ProductOrderingModeEnum, $filter: ProductFilter, $pageSize: Int) {
query SearchQuery($search: String!, $isAutocomplete: Boolean!, $userIdentifier: Uuid!, $endCursor: String!, $orderingMode: ProductOrderingModeEnum, $filter: ProductFilter, $pageSize: Int, $parameters: [Uuid!] = []) {
articlesSearch(
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier}
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier, parameters: $parameters}
) {
...SimpleArticleInterfaceFragment
}
brandSearch(
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier}
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier, parameters: $parameters}
) {
...ListedBrandFragment
}
categoriesSearch(
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier}
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier, parameters: $parameters}
) {
...ListedCategoryConnectionFragment
}
Expand All @@ -121,7 +122,7 @@ export const SearchQueryDocument = gql`
orderingMode: $orderingMode
filter: $filter
first: $pageSize
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier}
searchInput: {search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier, parameters: $parameters}
) {
orderingMode
defaultOrderingMode
Expand Down
33 changes: 29 additions & 4 deletions storefront/graphql/requests/search/queries/SearchQuery.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,35 @@ query SearchQuery(
$orderingMode: ProductOrderingModeEnum
$filter: ProductFilter
$pageSize: Int
$parameters: [Uuid!] = []
) {
articlesSearch(searchInput: { search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier }) {
articlesSearch(
searchInput: {
search: $search
isAutocomplete: $isAutocomplete
userIdentifier: $userIdentifier
parameters: $parameters
}
) {
...SimpleArticleInterfaceFragment
}
brandSearch(searchInput: { search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier }) {
brandSearch(
searchInput: {
search: $search
isAutocomplete: $isAutocomplete
userIdentifier: $userIdentifier
parameters: $parameters
}
) {
...ListedBrandFragment
}
categoriesSearch(
searchInput: { search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier }
searchInput: {
search: $search
isAutocomplete: $isAutocomplete
userIdentifier: $userIdentifier
parameters: $parameters
}
) {
...ListedCategoryConnectionFragment
}
Expand All @@ -27,7 +47,12 @@ query SearchQuery(
orderingMode: $orderingMode
filter: $filter
first: $pageSize
searchInput: { search: $search, isAutocomplete: $isAutocomplete, userIdentifier: $userIdentifier }
searchInput: {
search: $search
isAutocomplete: $isAutocomplete
userIdentifier: $userIdentifier
parameters: $parameters
}
) {
orderingMode
defaultOrderingMode
Expand Down

0 comments on commit 43bfd57

Please sign in to comment.