Skip to content

Commit

Permalink
fix: queries (#16)
Browse files Browse the repository at this point in the history
* fix: queries

* fix: import path
  • Loading branch information
dicagno authored Jan 17, 2025
1 parent 4193fd4 commit c9a0163
Show file tree
Hide file tree
Showing 6 changed files with 166 additions and 125 deletions.
7 changes: 4 additions & 3 deletions actions/check-product-changes/poller.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ governing permissions and limitations under the License.

const { Timings, aggregate } = require('./lib/benchmark');
const { AdminAPI } = require('./lib/aem');
const { queries, requestSaaS, requestSpreadsheet, isValidUrl } = require('../utils');
const { requestSaaS, requestSpreadsheet, isValidUrl } = require('../utils');
const { GetAllSkusQuery, GetLastModifiedQuery } = require('../queries');
const { Core } = require('@adobe/aio-sdk');

const BATCH_SIZE = 50;
Expand Down Expand Up @@ -153,7 +154,7 @@ async function poll(params, stateLib) {
// check if the skus were last queried within the last 10 minutes
if (timings.now - state.skusLastQueriedAt >= skusRefreshInterval) {
state.skusLastQueriedAt = new Date();
const allSkusResp = await requestSaaS(queries.getAllSkus, 'getAllSkus', {}, context);
const allSkusResp = await requestSaaS(GetAllSkusQuery, 'getAllSkus', {}, context);
const allSkus = allSkusResp.data.productSearch.items
.map(({ productView }) => productView || {})
.filter(Boolean);
Expand All @@ -170,7 +171,7 @@ async function poll(params, stateLib) {

// get last modified dates
const skus = Object.keys(state.skus);
const lastModifiedResp = await requestSaaS(queries.getLastModified, 'getLastModified', { skus }, context);
const lastModifiedResp = await requestSaaS(GetLastModifiedQuery, 'getLastModified', { skus }, context);
timings.sample('fetchedLastModifiedDates');
log.info(`Fetched last modified date for ${lastModifiedResp.data.products.length} skus, total ${skus.length}`);

Expand Down
3 changes: 1 addition & 2 deletions actions/pdp-renderer/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,9 @@ const path = require('path');

const { Core } = require('@adobe/aio-sdk')
const Handlebars = require('handlebars');

const { errorResponse, stringParameters, requestSaaS } = require('../utils');
const { extractPathDetails, findDescription, prepareBaseTemplate, getPrimaryImage, generatePriceString, getImageList } = require('./lib');
const { ProductQuery } = require('./queries');
const { ProductQuery } = require('../queries');
const { generateLdJson } = require('./ldJson');

function toTemplateProductData(baseProduct) {
Expand Down
2 changes: 1 addition & 1 deletion actions/pdp-renderer/ldJson.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const { requestSaaS } = require('../utils');
const { getProductUrl, findDescription, getPrimaryImage } = require('./lib');
const { VariantsQuery } = require('./queries');
const { VariantsQuery } = require('../queries');

function getOffer(product, url) {
const { sku, inStock, price } = product;
Expand Down
115 changes: 0 additions & 115 deletions actions/pdp-renderer/queries.js

This file was deleted.

156 changes: 156 additions & 0 deletions actions/queries.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
const ProductQuery = `query ProductQuery($sku: String!) {
products(skus: [$sku]) {
__typename
id
sku
name
url
description
shortDescription
metaDescription
metaKeyword
metaTitle
urlKey
inStock
externalId
lastModifiedAt
images(roles: []) {
url
label
roles
}
attributes(roles: ["visible_in_pdp"]) {
name
label
value
roles
}
... on SimpleProductView {
price {
...priceFields
}
}
... on ComplexProductView {
options {
id
title
required
values {
id
title
inStock
... on ProductViewOptionValueSwatch {
type
value
}
}
}
priceRange {
maximum {
...priceFields
}
minimum {
...priceFields
}
}
}
}
}
fragment priceFields on ProductViewPrice {
roles
regular {
amount {
currency
value
}
}
final {
amount {
currency
value
}
}
}`;

const VariantsQuery = `query VariantsQuery($sku: String!) {
variants(sku: $sku) {
variants {
selections
product {
sku
name
inStock
images(roles: []) {
url
roles
}
attributes(roles: ["visible_in_pdp"]) {
name
label
value
roles
}
... on SimpleProductView {
price {
roles
regular {
amount {
value
currency
}
}
final {
amount {
value
currency
}
}
}
}
}
}
}
}`;

const GetAllSkusQuery = `
query getAllSkus {
productSearch(phrase: "", page_size: 500) {
items {
productView {
urlKey
sku
}
}
}
}
`;

const GetLastModifiedQuery = `
query getLastModified($skus: [String]!) {
products(skus: $skus) {
sku
urlKey
lastModifiedAt
}
}
`;

const GetAllSkusPaginatedQuery = `query getAllSkusPaginated($currentPage: Int!) {
productSearch(phrase: "", page_size: 500, current_page: $currentPage) {
items {
productView {
urlKey
sku
}
}
}
}
`;

module.exports = {
ProductQuery,
VariantsQuery,
GetAllSkusQuery,
GetAllSkusPaginatedQuery,
GetLastModifiedQuery,
};
8 changes: 4 additions & 4 deletions tools/check-products-count.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ governing permissions and limitations under the License.

require('dotenv').config();

const { performSaaSQuery, queries } = require('../actions/check-product-changes/lib/commerce');
const { getSpreadsheet } = require('../actions/check-product-changes/lib/aem');
const { requestSaaS, requestSpreadsheet } = require('../actions/utils');
const { GetAllSkusPaginatedQuery } = require('../actions/queries');

async function main() {
// TODO: fetch from app.config.yaml (incl. mapped env vars)?
Expand All @@ -26,10 +26,10 @@ async function main() {
} = process.env;

const context = { storeCode, storeUrl, configName };
const { total: actualCount } = await getSpreadsheet('published-products-index', context);
const { total: actualCount } = await requestSpreadsheet('published-products-index', context);
let [productsCount, currentPage, expectedCount] = [-1, 1, 0];
while (productsCount !== 0) {
const { data: { productSearch: { items: products } } } = await performSaaSQuery(queries.getAllSkusPaginated, 'getAllSkusPaginated', { currentPage }, context);
const { data: { productSearch: { items: products } } } = await requestSaaS(GetAllSkusPaginatedQuery, 'getAllSkusPaginated', { currentPage }, context);
productsCount = products.length;
expectedCount += productsCount;
currentPage++;
Expand Down

0 comments on commit c9a0163

Please sign in to comment.