UNPKG

vinmonopolet-ts

Version:

Extracts information on products, categories and stores from Vinmonopolet

31 lines (30 loc) 1.36 kB
import { GET } from "../../util/GET"; import { VINMONOPOLET_SEARCH_URL } from "../../constants"; import Pagination from "../../models/Pagination"; import { fromDTOToBaseProduct } from "../../models/product/mapper"; const sortFields = ["relevance", "name", "price", "alcohol"]; const sortOrders = ["asc", "desc"]; async function getProducts(options) { const query = createSearchQuery(options); const productSearchResult = await GET(VINMONOPOLET_SEARCH_URL, query); return { pagination: new Pagination(productSearchResult.pagination, options, getProducts), products: productSearchResult.products.map(fromDTOToBaseProduct), }; } function createSearchQuery(options) { const facetquery = options?.facets?.map((facet) => facet.query) ?? []; const sortValue = options && Array.isArray(options?.sort) ? options.sort.join("-") : options?.sort; const sortQuery = sortValue ? `:${sortValue}:` : ":relevance:"; const textQuery = options?.query ?? ""; return new URLSearchParams({ searchType: "product", fields: "FULL", pageSize: (options?.limit ? options.limit : 24).toString(), currentPage: (options?.page ? options.page - 1 : 0).toString(), q: textQuery + sortQuery + facetquery?.join(":"), }); } export default getProducts;