Skip to content

Commit c9a0163

Browse files
authored
fix: queries (#16)
* fix: queries * fix: import path
1 parent 4193fd4 commit c9a0163

File tree

6 files changed

+166
-125
lines changed

6 files changed

+166
-125
lines changed

actions/check-product-changes/poller.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ governing permissions and limitations under the License.
1212

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

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

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

actions/pdp-renderer/index.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,9 @@ const path = require('path');
1515

1616
const { Core } = require('@adobe/aio-sdk')
1717
const Handlebars = require('handlebars');
18-
1918
const { errorResponse, stringParameters, requestSaaS } = require('../utils');
2019
const { extractPathDetails, findDescription, prepareBaseTemplate, getPrimaryImage, generatePriceString, getImageList } = require('./lib');
21-
const { ProductQuery } = require('./queries');
20+
const { ProductQuery } = require('../queries');
2221
const { generateLdJson } = require('./ldJson');
2322

2423
function toTemplateProductData(baseProduct) {

actions/pdp-renderer/ldJson.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const { requestSaaS } = require('../utils');
22
const { getProductUrl, findDescription, getPrimaryImage } = require('./lib');
3-
const { VariantsQuery } = require('./queries');
3+
const { VariantsQuery } = require('../queries');
44

55
function getOffer(product, url) {
66
const { sku, inStock, price } = product;

actions/pdp-renderer/queries.js

Lines changed: 0 additions & 115 deletions
This file was deleted.

actions/queries.js

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
const ProductQuery = `query ProductQuery($sku: String!) {
2+
products(skus: [$sku]) {
3+
__typename
4+
id
5+
sku
6+
name
7+
url
8+
description
9+
shortDescription
10+
metaDescription
11+
metaKeyword
12+
metaTitle
13+
urlKey
14+
inStock
15+
externalId
16+
lastModifiedAt
17+
images(roles: []) {
18+
url
19+
label
20+
roles
21+
}
22+
attributes(roles: ["visible_in_pdp"]) {
23+
name
24+
label
25+
value
26+
roles
27+
}
28+
... on SimpleProductView {
29+
price {
30+
...priceFields
31+
}
32+
}
33+
... on ComplexProductView {
34+
options {
35+
id
36+
title
37+
required
38+
values {
39+
id
40+
title
41+
inStock
42+
... on ProductViewOptionValueSwatch {
43+
type
44+
value
45+
}
46+
}
47+
}
48+
priceRange {
49+
maximum {
50+
...priceFields
51+
}
52+
minimum {
53+
...priceFields
54+
}
55+
}
56+
}
57+
}
58+
}
59+
fragment priceFields on ProductViewPrice {
60+
roles
61+
regular {
62+
amount {
63+
currency
64+
value
65+
}
66+
}
67+
final {
68+
amount {
69+
currency
70+
value
71+
}
72+
}
73+
}`;
74+
75+
const VariantsQuery = `query VariantsQuery($sku: String!) {
76+
variants(sku: $sku) {
77+
variants {
78+
selections
79+
product {
80+
sku
81+
name
82+
inStock
83+
images(roles: []) {
84+
url
85+
roles
86+
}
87+
attributes(roles: ["visible_in_pdp"]) {
88+
name
89+
label
90+
value
91+
roles
92+
}
93+
... on SimpleProductView {
94+
price {
95+
roles
96+
regular {
97+
amount {
98+
value
99+
currency
100+
}
101+
}
102+
final {
103+
amount {
104+
value
105+
currency
106+
}
107+
}
108+
}
109+
}
110+
}
111+
}
112+
}
113+
}`;
114+
115+
const GetAllSkusQuery = `
116+
query getAllSkus {
117+
productSearch(phrase: "", page_size: 500) {
118+
items {
119+
productView {
120+
urlKey
121+
sku
122+
}
123+
}
124+
}
125+
}
126+
`;
127+
128+
const GetLastModifiedQuery = `
129+
query getLastModified($skus: [String]!) {
130+
products(skus: $skus) {
131+
sku
132+
urlKey
133+
lastModifiedAt
134+
}
135+
}
136+
`;
137+
138+
const GetAllSkusPaginatedQuery = `query getAllSkusPaginated($currentPage: Int!) {
139+
productSearch(phrase: "", page_size: 500, current_page: $currentPage) {
140+
items {
141+
productView {
142+
urlKey
143+
sku
144+
}
145+
}
146+
}
147+
}
148+
`;
149+
150+
module.exports = {
151+
ProductQuery,
152+
VariantsQuery,
153+
GetAllSkusQuery,
154+
GetAllSkusPaginatedQuery,
155+
GetLastModifiedQuery,
156+
};

tools/check-products-count.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ governing permissions and limitations under the License.
1212

1313
require('dotenv').config();
1414

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

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

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

0 commit comments

Comments
 (0)