@adtrackify/at-service-common 3.1.4 → 3.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/clients/third-party/shopify/graphql-product-queries.d.ts +1 -0
- package/dist/cjs/clients/third-party/shopify/graphql-product-queries.js +109 -0
- package/dist/cjs/clients/third-party/shopify/graphql-product-queries.js.map +1 -0
- package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.d.ts +9 -0
- package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.js +97 -0
- package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.js.map +1 -0
- package/dist/cjs/clients/third-party/shopify-client.d.ts +0 -2
- package/dist/cjs/clients/third-party/shopify-client.js +0 -127
- package/dist/cjs/clients/third-party/shopify-client.js.map +1 -1
- package/dist/cjs/services/cache/index.d.ts +1 -0
- package/dist/cjs/services/cache/index.js +18 -0
- package/dist/cjs/services/cache/index.js.map +1 -0
- package/dist/cjs/services/cache/product-cache-service.d.ts +9 -0
- package/dist/cjs/services/cache/product-cache-service.js +32 -0
- package/dist/cjs/services/cache/product-cache-service.js.map +1 -0
- package/dist/cjs/services/db/shopify-products-cache-db-service.d.ts +0 -11
- package/dist/cjs/services/db/shopify-products-cache-db-service.js +0 -43
- package/dist/cjs/services/db/shopify-products-cache-db-service.js.map +1 -1
- package/dist/cjs/services/generic-cache-service.d.ts +8 -0
- package/dist/cjs/services/generic-cache-service.js +31 -0
- package/dist/cjs/services/generic-cache-service.js.map +1 -0
- package/dist/cjs/services/index.d.ts +3 -0
- package/dist/cjs/services/index.js +3 -0
- package/dist/cjs/services/index.js.map +1 -1
- package/dist/cjs/services/shopify/index.d.ts +3 -0
- package/dist/cjs/services/shopify/index.js +20 -0
- package/dist/cjs/services/shopify/index.js.map +1 -0
- package/dist/cjs/services/shopify/products/index.d.ts +1 -0
- package/dist/cjs/services/shopify/products/index.js +18 -0
- package/dist/cjs/services/shopify/products/index.js.map +1 -0
- package/dist/cjs/services/shopify/products/shopify-products-serviceV2.d.ts +7 -0
- package/dist/cjs/services/shopify/products/shopify-products-serviceV2.js +53 -0
- package/dist/cjs/services/shopify/products/shopify-products-serviceV2.js.map +1 -0
- package/dist/cjs/services/shopify/shopify-graphql-transformer.d.ts +6 -0
- package/dist/cjs/services/shopify/shopify-graphql-transformer.js +80 -0
- package/dist/cjs/services/shopify/shopify-graphql-transformer.js.map +1 -0
- package/dist/cjs/services/shopify/types/index.d.ts +1 -0
- package/dist/cjs/services/shopify/types/index.js +18 -0
- package/dist/cjs/services/shopify/types/index.js.map +1 -0
- package/dist/cjs/services/shopify/types/product.d.ts +83 -0
- package/dist/cjs/services/shopify/types/product.js +10 -0
- package/dist/cjs/services/shopify/types/product.js.map +1 -0
- package/dist/cjs/types/shopify-graphql-types/admin.generated.d.ts +4 -1
- package/dist/esm/clients/third-party/shopify/graphql-product-queries.d.ts +1 -0
- package/dist/esm/clients/third-party/shopify/graphql-product-queries.js +106 -0
- package/dist/esm/clients/third-party/shopify/graphql-product-queries.js.map +1 -0
- package/dist/esm/clients/third-party/shopify/shopify-graphql-client.d.ts +9 -0
- package/dist/esm/clients/third-party/shopify/shopify-graphql-client.js +93 -0
- package/dist/esm/clients/third-party/shopify/shopify-graphql-client.js.map +1 -0
- package/dist/esm/clients/third-party/shopify-client.d.ts +0 -2
- package/dist/esm/clients/third-party/shopify-client.js +0 -127
- package/dist/esm/clients/third-party/shopify-client.js.map +1 -1
- package/dist/esm/services/cache/index.d.ts +1 -0
- package/dist/esm/services/cache/index.js +2 -0
- package/dist/esm/services/cache/index.js.map +1 -0
- package/dist/esm/services/cache/product-cache-service.d.ts +9 -0
- package/dist/esm/services/cache/product-cache-service.js +28 -0
- package/dist/esm/services/cache/product-cache-service.js.map +1 -0
- package/dist/esm/services/db/shopify-products-cache-db-service.d.ts +0 -11
- package/dist/esm/services/db/shopify-products-cache-db-service.js +0 -43
- package/dist/esm/services/db/shopify-products-cache-db-service.js.map +1 -1
- package/dist/esm/services/generic-cache-service.d.ts +8 -0
- package/dist/esm/services/generic-cache-service.js +27 -0
- package/dist/esm/services/generic-cache-service.js.map +1 -0
- package/dist/esm/services/index.d.ts +3 -0
- package/dist/esm/services/index.js +3 -0
- package/dist/esm/services/index.js.map +1 -1
- package/dist/esm/services/shopify/index.d.ts +3 -0
- package/dist/esm/services/shopify/index.js +4 -0
- package/dist/esm/services/shopify/index.js.map +1 -0
- package/dist/esm/services/shopify/products/index.d.ts +1 -0
- package/dist/esm/services/shopify/products/index.js +2 -0
- package/dist/esm/services/shopify/products/index.js.map +1 -0
- package/dist/esm/services/shopify/products/shopify-products-serviceV2.d.ts +7 -0
- package/dist/esm/services/shopify/products/shopify-products-serviceV2.js +49 -0
- package/dist/esm/services/shopify/products/shopify-products-serviceV2.js.map +1 -0
- package/dist/esm/services/shopify/shopify-graphql-transformer.d.ts +6 -0
- package/dist/esm/services/shopify/shopify-graphql-transformer.js +77 -0
- package/dist/esm/services/shopify/shopify-graphql-transformer.js.map +1 -0
- package/dist/esm/services/shopify/types/index.d.ts +1 -0
- package/dist/esm/services/shopify/types/index.js +2 -0
- package/dist/esm/services/shopify/types/index.js.map +1 -0
- package/dist/esm/services/shopify/types/product.d.ts +83 -0
- package/dist/esm/services/shopify/types/product.js +7 -0
- package/dist/esm/services/shopify/types/product.js.map +1 -0
- package/dist/esm/types/shopify-graphql-types/admin.generated.d.ts +4 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const graphqlProductQueryByProductId = "\n#graphql\nquery GetProduct($id: ID!, $first: Int!, $after: String) {\n product(id: $id) { \n id\n handle\n productType\n hasOnlyDefaultVariant\n isGiftCard\n legacyResourceId\n onlineStoreUrl\n productType\n publishedAt\n requiresSellingPlan\n status\n tags\n title\n totalInventory\n tracksInventory\n vendor\n createdAt\n updatedAt\n priceRangeV2 {\n maxVariantPrice {\n amount\n currencyCode\n }\n minVariantPrice {\n amount\n currencyCode\n }\n }\n variantsCount {\n count\n }\n seo {\n title\n description\n }\n variants (first: $first, after: $after) { \n pageInfo {\n hasNextPage\n endCursor\n }\n nodes {\n availableForSale\n barcode\n compareAtPrice\n createdAt\n displayName\n id\n image {\n id\n url \n }\n inventoryQuantity\n price \n media (first: 10) {\n nodes {\n id\n mediaContentType\n status\n preview {\n image {\n id\n url\n }\n status\n }\n }\n }\n selectedOptions {\n name\n value\n }\n sellableOnlineQuantity\n sku\n taxable\n title\n updatedAt\n }\n }\n media (first: 10) {\n nodes {\n id\n mediaContentType\n status\n preview {\n image {\n id\n url\n }\n status\n }\n }\n }\n category {\n id\n name\n fullName\n parentId\n }\n }\n}\n";
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.graphqlProductQueryByProductId = void 0;
|
|
4
|
+
exports.graphqlProductQueryByProductId = `
|
|
5
|
+
#graphql
|
|
6
|
+
query GetProduct($id: ID!, $first: Int!, $after: String) {
|
|
7
|
+
product(id: $id) {
|
|
8
|
+
id
|
|
9
|
+
handle
|
|
10
|
+
productType
|
|
11
|
+
hasOnlyDefaultVariant
|
|
12
|
+
isGiftCard
|
|
13
|
+
legacyResourceId
|
|
14
|
+
onlineStoreUrl
|
|
15
|
+
productType
|
|
16
|
+
publishedAt
|
|
17
|
+
requiresSellingPlan
|
|
18
|
+
status
|
|
19
|
+
tags
|
|
20
|
+
title
|
|
21
|
+
totalInventory
|
|
22
|
+
tracksInventory
|
|
23
|
+
vendor
|
|
24
|
+
createdAt
|
|
25
|
+
updatedAt
|
|
26
|
+
priceRangeV2 {
|
|
27
|
+
maxVariantPrice {
|
|
28
|
+
amount
|
|
29
|
+
currencyCode
|
|
30
|
+
}
|
|
31
|
+
minVariantPrice {
|
|
32
|
+
amount
|
|
33
|
+
currencyCode
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
variantsCount {
|
|
37
|
+
count
|
|
38
|
+
}
|
|
39
|
+
seo {
|
|
40
|
+
title
|
|
41
|
+
description
|
|
42
|
+
}
|
|
43
|
+
variants (first: $first, after: $after) {
|
|
44
|
+
pageInfo {
|
|
45
|
+
hasNextPage
|
|
46
|
+
endCursor
|
|
47
|
+
}
|
|
48
|
+
nodes {
|
|
49
|
+
availableForSale
|
|
50
|
+
barcode
|
|
51
|
+
compareAtPrice
|
|
52
|
+
createdAt
|
|
53
|
+
displayName
|
|
54
|
+
id
|
|
55
|
+
image {
|
|
56
|
+
id
|
|
57
|
+
url
|
|
58
|
+
}
|
|
59
|
+
inventoryQuantity
|
|
60
|
+
price
|
|
61
|
+
media (first: 10) {
|
|
62
|
+
nodes {
|
|
63
|
+
id
|
|
64
|
+
mediaContentType
|
|
65
|
+
status
|
|
66
|
+
preview {
|
|
67
|
+
image {
|
|
68
|
+
id
|
|
69
|
+
url
|
|
70
|
+
}
|
|
71
|
+
status
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
selectedOptions {
|
|
76
|
+
name
|
|
77
|
+
value
|
|
78
|
+
}
|
|
79
|
+
sellableOnlineQuantity
|
|
80
|
+
sku
|
|
81
|
+
taxable
|
|
82
|
+
title
|
|
83
|
+
updatedAt
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
media (first: 10) {
|
|
87
|
+
nodes {
|
|
88
|
+
id
|
|
89
|
+
mediaContentType
|
|
90
|
+
status
|
|
91
|
+
preview {
|
|
92
|
+
image {
|
|
93
|
+
id
|
|
94
|
+
url
|
|
95
|
+
}
|
|
96
|
+
status
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
category {
|
|
101
|
+
id
|
|
102
|
+
name
|
|
103
|
+
fullName
|
|
104
|
+
parentId
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
`;
|
|
109
|
+
//# sourceMappingURL=graphql-product-queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-product-queries.js","sourceRoot":"","sources":["../../../../../src/clients/third-party/shopify/graphql-product-queries.ts"],"names":[],"mappings":";;;AAAa,QAAA,8BAA8B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwG7C,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AdminApiClient } from '@shopify/admin-api-client';
|
|
2
|
+
import { Product } from '../../../types';
|
|
3
|
+
export declare class ShopifyGraphQLClient {
|
|
4
|
+
static _shopify_api_version: string;
|
|
5
|
+
static getClient: (shop: string, accessToken: string) => AdminApiClient;
|
|
6
|
+
static getProductWithVariantsGraphQL: (shop: string, accessToken: string, productId: string, pageSize?: number) => Promise<Product | undefined>;
|
|
7
|
+
private static executePagedProductQuery;
|
|
8
|
+
private static executeProductQuery;
|
|
9
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ShopifyGraphQLClient = void 0;
|
|
4
|
+
const admin_api_client_1 = require("@shopify/admin-api-client");
|
|
5
|
+
const helpers_1 = require("../../../helpers");
|
|
6
|
+
const graphql_product_queries_1 = require("./graphql-product-queries");
|
|
7
|
+
class ShopifyGraphQLClient {
|
|
8
|
+
static _shopify_api_version = process.env.SHOPIFY_API_VERSION;
|
|
9
|
+
static getClient = (shop, accessToken) => {
|
|
10
|
+
const client = (0, admin_api_client_1.createAdminApiClient)({
|
|
11
|
+
storeDomain: shop,
|
|
12
|
+
accessToken: accessToken,
|
|
13
|
+
apiVersion: '2024-10',
|
|
14
|
+
retries: 1
|
|
15
|
+
});
|
|
16
|
+
return client;
|
|
17
|
+
};
|
|
18
|
+
static getProductWithVariantsGraphQL = async (shop, accessToken, productId, pageSize = 100) => {
|
|
19
|
+
try {
|
|
20
|
+
const client = this.getClient(shop, accessToken);
|
|
21
|
+
const product = await this.executePagedProductQuery(client, productId, pageSize, null);
|
|
22
|
+
return product ?? undefined;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
helpers_1.Logger.error('Failed getProductWithVariantsGraphQL', {
|
|
26
|
+
error,
|
|
27
|
+
shop,
|
|
28
|
+
accessToken,
|
|
29
|
+
productId
|
|
30
|
+
});
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
static executePagedProductQuery = async (client, productId, pageSize, cursor) => {
|
|
35
|
+
try {
|
|
36
|
+
let product = null;
|
|
37
|
+
const allVariants = [];
|
|
38
|
+
let hasNextPage = true;
|
|
39
|
+
while (hasNextPage) {
|
|
40
|
+
helpers_1.Logger.info('executePagedProductQuery', { productId, pageSize, cursor });
|
|
41
|
+
product = await this.executeProductQuery(client, productId, pageSize, cursor ?? null);
|
|
42
|
+
if (!product) {
|
|
43
|
+
helpers_1.Logger.error('Product not found', { product, shop: client.config.storeDomain, productId, accessToken: client.config.accessToken });
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
allVariants.push(...(product?.variants?.nodes ?? []));
|
|
47
|
+
hasNextPage = product?.variants?.pageInfo?.hasNextPage;
|
|
48
|
+
cursor = product?.variants?.pageInfo?.endCursor;
|
|
49
|
+
if (hasNextPage) {
|
|
50
|
+
helpers_1.Logger.info('hasNextPage product variants', { hasNextPage, shop: client.config.storeDomain, productId, accessToken: client.config.accessToken });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (product) {
|
|
54
|
+
product.variants.nodes = allVariants;
|
|
55
|
+
}
|
|
56
|
+
return product ?? undefined;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
helpers_1.Logger.error('Failed to execute paged product query', { error, shop: client.config.storeDomain, productId, accessToken: client.config.accessToken });
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
static executeProductQuery = async (client, productId, pageSize, cursor) => {
|
|
64
|
+
try {
|
|
65
|
+
let product = null;
|
|
66
|
+
const result = await client.request(graphql_product_queries_1.graphqlProductQueryByProductId, {
|
|
67
|
+
variables: {
|
|
68
|
+
id: `gid://shopify/Product/${productId}`,
|
|
69
|
+
first: pageSize,
|
|
70
|
+
after: cursor
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
if (result?.errors) {
|
|
74
|
+
helpers_1.Logger.error('Failed to executeProductQuery -- response errors', {
|
|
75
|
+
result,
|
|
76
|
+
responseErrors: result.errors,
|
|
77
|
+
shop: client.config.storeDomain,
|
|
78
|
+
productId,
|
|
79
|
+
cursor
|
|
80
|
+
});
|
|
81
|
+
throw result.errors;
|
|
82
|
+
}
|
|
83
|
+
product = result?.data?.product;
|
|
84
|
+
if (!product) {
|
|
85
|
+
helpers_1.Logger.error('Failed to get product', { result, shop: client.config.storeDomain, productId, accessToken: client.config.accessToken });
|
|
86
|
+
throw new Error('Failed to get product - No product found');
|
|
87
|
+
}
|
|
88
|
+
return product;
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
helpers_1.Logger.error('Failed to executeProductQuery -- exception', { error, shop: client.config.storeDomain, productId, accessToken: client.config.accessToken });
|
|
92
|
+
throw error;
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
exports.ShopifyGraphQLClient = ShopifyGraphQLClient;
|
|
97
|
+
//# sourceMappingURL=shopify-graphql-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shopify-graphql-client.js","sourceRoot":"","sources":["../../../../../src/clients/third-party/shopify/shopify-graphql-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { GenericHttpClient } from '../generic/http-client.js';
|
|
2
2
|
import { IOrder, IProduct } from 'shopify-api-node';
|
|
3
3
|
import { ApiResponse } from '../../types/api-response.js';
|
|
4
|
-
import { GetProductQuery } from '../../types/shopify-graphql-types/admin.generated.js';
|
|
5
4
|
export declare class ShopifyClient {
|
|
6
5
|
static _shopify_api_version: string;
|
|
7
6
|
static client: GenericHttpClient;
|
|
@@ -196,5 +195,4 @@ export declare class ShopifyClient {
|
|
|
196
195
|
};
|
|
197
196
|
headers?: undefined;
|
|
198
197
|
}>;
|
|
199
|
-
static getProductGraphQL: (shop: string, accessToken: string, productId: string) => Promise<GetProductQuery | undefined>;
|
|
200
198
|
}
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ShopifyClient = void 0;
|
|
4
4
|
const http_client_js_1 = require("../generic/http-client.js");
|
|
5
5
|
const index_js_1 = require("../../index.js");
|
|
6
|
-
const admin_api_client_1 = require("@shopify/admin-api-client");
|
|
7
6
|
class ShopifyClient {
|
|
8
7
|
static _shopify_api_version = process.env.SHOPIFY_API_VERSION;
|
|
9
8
|
static client;
|
|
@@ -147,132 +146,6 @@ class ShopifyClient {
|
|
|
147
146
|
index_js_1.Logger.debug('Shopify Client Response', { res });
|
|
148
147
|
return res;
|
|
149
148
|
};
|
|
150
|
-
static getProductGraphQL = async (shop, accessToken, productId) => {
|
|
151
|
-
try {
|
|
152
|
-
const client = (0, admin_api_client_1.createAdminApiClient)({
|
|
153
|
-
storeDomain: shop,
|
|
154
|
-
accessToken: accessToken,
|
|
155
|
-
apiVersion: '2024-10'
|
|
156
|
-
});
|
|
157
|
-
const query = `
|
|
158
|
-
#graphql
|
|
159
|
-
query GetProduct($id: ID!) {
|
|
160
|
-
product(id: $id) {
|
|
161
|
-
|
|
162
|
-
id
|
|
163
|
-
handle
|
|
164
|
-
productType
|
|
165
|
-
hasOnlyDefaultVariant
|
|
166
|
-
isGiftCard
|
|
167
|
-
legacyResourceId
|
|
168
|
-
onlineStoreUrl
|
|
169
|
-
productType
|
|
170
|
-
publishedAt
|
|
171
|
-
requiresSellingPlan
|
|
172
|
-
status
|
|
173
|
-
tags
|
|
174
|
-
title
|
|
175
|
-
totalInventory
|
|
176
|
-
tracksInventory
|
|
177
|
-
vendor
|
|
178
|
-
createdAt
|
|
179
|
-
updatedAt
|
|
180
|
-
priceRangeV2 {
|
|
181
|
-
maxVariantPrice {
|
|
182
|
-
amount
|
|
183
|
-
currencyCode
|
|
184
|
-
}
|
|
185
|
-
minVariantPrice {
|
|
186
|
-
amount
|
|
187
|
-
currencyCode
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
variantsCount {
|
|
191
|
-
count
|
|
192
|
-
}
|
|
193
|
-
seo {
|
|
194
|
-
title
|
|
195
|
-
description
|
|
196
|
-
}
|
|
197
|
-
variants (first: 100) {
|
|
198
|
-
nodes {
|
|
199
|
-
availableForSale
|
|
200
|
-
barcode
|
|
201
|
-
compareAtPrice
|
|
202
|
-
createdAt
|
|
203
|
-
displayName
|
|
204
|
-
id
|
|
205
|
-
image {
|
|
206
|
-
id
|
|
207
|
-
url
|
|
208
|
-
}
|
|
209
|
-
inventoryQuantity
|
|
210
|
-
price
|
|
211
|
-
media (first: 10) {
|
|
212
|
-
nodes {
|
|
213
|
-
id
|
|
214
|
-
mediaContentType
|
|
215
|
-
status
|
|
216
|
-
preview {
|
|
217
|
-
image {
|
|
218
|
-
id
|
|
219
|
-
url
|
|
220
|
-
}
|
|
221
|
-
status
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
selectedOptions {
|
|
226
|
-
name
|
|
227
|
-
value
|
|
228
|
-
}
|
|
229
|
-
sellableOnlineQuantity
|
|
230
|
-
sku
|
|
231
|
-
taxable
|
|
232
|
-
title
|
|
233
|
-
updatedAt
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
media (first: 10) {
|
|
237
|
-
nodes {
|
|
238
|
-
id
|
|
239
|
-
mediaContentType
|
|
240
|
-
status
|
|
241
|
-
preview {
|
|
242
|
-
image {
|
|
243
|
-
id
|
|
244
|
-
url
|
|
245
|
-
}
|
|
246
|
-
status
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
category {
|
|
251
|
-
id
|
|
252
|
-
name
|
|
253
|
-
fullName
|
|
254
|
-
parentId
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
`;
|
|
259
|
-
const result = await client.request(query, {
|
|
260
|
-
variables: {
|
|
261
|
-
id: `gid://shopify/Product/${productId}`
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
index_js_1.Logger.info('getProductGraphQL - result', { result });
|
|
265
|
-
if (result?.errors) {
|
|
266
|
-
index_js_1.Logger.error('Failed to get Product', { result, errors: result.errors, shop, accessToken, productId, query, data: result?.data });
|
|
267
|
-
throw result.errors;
|
|
268
|
-
}
|
|
269
|
-
return result.data;
|
|
270
|
-
}
|
|
271
|
-
catch (error) {
|
|
272
|
-
index_js_1.Logger.error('Failed to getProductGraphQL', { error, e: error, shop, accessToken, productId });
|
|
273
|
-
throw error;
|
|
274
|
-
}
|
|
275
|
-
};
|
|
276
149
|
}
|
|
277
150
|
exports.ShopifyClient = ShopifyClient;
|
|
278
151
|
//# sourceMappingURL=shopify-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify-client.js","sourceRoot":"","sources":["../../../../src/clients/third-party/shopify-client.ts"],"names":[],"mappings":";;;AAAA,8DAAgF;AAChF,6CAAwC;
|
|
1
|
+
{"version":3,"file":"shopify-client.js","sourceRoot":"","sources":["../../../../src/clients/third-party/shopify-client.ts"],"names":[],"mappings":";;;AAAA,8DAAgF;AAChF,6CAAwC;AAIxC,MAAa,aAAa;IACxB,MAAM,CAAC,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAA6B,CAAC;IACxE,MAAM,CAAC,MAAM,CAAoB;IAEjC,MAAM,CAAC,SAAS,GAAG,CAAC,aAAqB,EAAE,WAAmB,EAAE,EAAE;QAChE,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,WAAW,aAAa,cAAc,IAAI,CAAC,oBAAoB,EAAE;YAC1E,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,wBAAwB,EAAE,WAAW;iBACtC;aACF;SACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAA,iCAAgB,GAAE,CAAC;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,CAAC,WAAW,GAAG,KAAK,EAAE,IAAY,EAAE,IAAY,EAAE,MAAc,EAAE,SAAiB,EAAE,EAAE;QAC3F,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,UAAU,GAAG,IAAI,GAAG,2BAA2B,CAAC;QAC5D,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,MAAM;YACjB,aAAa,EAAE,SAAS;YACxB,IAAI;SACL,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,CAAC,oBAAoB,GAAG,KAAK,EAAE,IAAY,EAAE,WAAmB,EAAE,cAAsB,EAAE,KAAa,EAAE,EAAE;QAC/G,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,WAAW,IAAI,cAAc,IAAI,CAAC,oBAAoB,gBAAgB,CAAC;QACnF,MAAM,OAAO,GAAG;YACd,OAAO,EAAE;gBACP,KAAK;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,MAAM;aACf;SACF,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,wBAAwB,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QACpG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;YACrB,iBAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;SACnH;QACD,iBAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,EAAE,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5F,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,CAAC,yBAAyB,GAAG,KAAK,EAAE,IAAY,EAAE,WAAmB,EAAE,OAAe,EAAE,EAAE;QAC9F,MAAM,GAAG,GAAG,WAAW,IAAI,cAAc,IAAI,CAAC,oBAAoB,kBAAkB,CAAC;QACrF,MAAM,OAAO,GAAG;YACd,SAAS,EAAE;gBACT,SAAS,EAAE,MAAM;gBACjB,GAAG,EAAE,aAAa;gBAClB,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,wBAAwB;aAC/B;SACF,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAErE,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;YACrB,iBAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;SAC9F;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,CAAC,yBAAyB,GAAG,KAAK,EAAE,IAAY,EAAE,WAAmB,EAAE,EAAE;QAC7E,MAAM,GAAG,GAAG,WAAW,IAAI,cAAc,IAAI,CAAC,oBAAoB,YAAY,CAAC;QAC/E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAE3D,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;YACrB,iBAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;SACpF;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,CAAC,qBAAqB,GAAG,KAAK,EAAE,IAAY,EAAE,WAAmB,EACrE,QAAgB,EAAE,KAAa,EAAE,SAAiB,EAAE,SAAiB,EAAE,IAAc,EAAE,EAAE;QACzF,MAAM,GAAG,GAAG,WAAW,IAAI,cAAc,IAAI,CAAC,oBAAoB,qCAAqC,CAAC;QACxG,MAAM,4BAA4B,GAAG;YACnC,IAAI,EAAE,QAAQ;YACd,KAAK;YACL,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,SAAS;YACrB,IAAI;SACL,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,4BAA4B,EAAE,CAAC,CAAC;QAC9F,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;YACrB,iBAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;SAC/E;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,CAAC,qBAAqB,GAAG,KAAK,EAAE,IAAY,EAAE,WAAmB,EAAE,QAAgB,EAAE,EAAE;QAC3F,MAAM,GAAG,GAAG,WAAW,IAAI,cAAc,IAAI,CAAC,oBAAoB,kCAAkC,QAAQ,OAAO,CAAC;QACpH,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,wBAAwB,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAE7F,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;YACtB,iBAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;SACpF;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,CAAC,oBAAoB,GAAG,KAAK,EAAE,IAAY,EAAE,WAAmB,EAAE,EAAE;QACxE,MAAM,GAAG,GAAG,WAAW,IAAI,cAAc,IAAI,CAAC,oBAAoB,qCAAqC,CAAC;QACxG,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC3D,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;YACrB,iBAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;SAC7E;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,CAAC,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAE,WAAmB,EAAE,OAAe,EAAE,EAAE;QAC7E,MAAM,GAAG,GAAG,WAAW,IAAI,cAAc,IAAI,CAAC,oBAAoB,WAAW,OAAO,OAAO,CAAC;QAC5F,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC3D,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;YACrB,iBAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;SAC/E;QACD,OAAO,GAAqC,CAAC;IAC/C,CAAC,CAAC;IAEF,MAAM,CAAC,cAAc,GAAG,KAAK,EAAE,IAAY,EAAE,WAAmB,EAAE,SAAiB,EAAE,EAAE;QACrF,MAAM,GAAG,GAAG,WAAW,IAAI,cAAc,IAAI,CAAC,oBAAoB,aAAa,SAAS,OAAO,CAAC;QAChG,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC3D,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;YACrB,iBAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;SACnF;QACD,OAAO,GAAyC,CAAC;IACnD,CAAC,CAAC;IACF,MAAM,CAAC,kBAAkB,GAAG,KAAK,EAAE,GAAW,EAAE,WAAmB,EAAE,OAAY,EAAE,EAAE;QACnF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,wBAAwB,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACxI,iBAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,CAAC,iBAAiB,GAAG,KAAK,EAAE,GAAW,EAAE,WAAmB,EAAE,EAAE;QACpE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,wBAAwB,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1F,iBAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,CAAC,iBAAiB,GAAG,KAAK,EAAE,GAAW,EAAE,WAAmB,EAAE,OAAY,EAAE,EAAE;QAClF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,wBAAwB,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QACnG,iBAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,CAAC,iBAAiB,GAAG,KAAK,EAAE,IAAY,EAAE,SAAiB,EAAE,WAAmB,EAAE,EAAE;QACxF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,WAAW,IAAI,cAAc,IAAI,CAAC,oBAAoB,aAAa,SAAS,OAAO,CAAC;QAEhG,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,wBAAwB,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAC7F,iBAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,OAAO,GAAG,CAAC;IACb,CAAC,CAAA;;AAjKH,sCAkKC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './product-cache-service.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./product-cache-service.js"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/cache/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InternalProduct } from '../shopify/types/product';
|
|
2
|
+
export declare class ProductCacheService {
|
|
3
|
+
private genericCacheService;
|
|
4
|
+
constructor(cacheLambdaFunctionArn: string);
|
|
5
|
+
getCacheKey: (pixelId: string, productId: string) => string;
|
|
6
|
+
getProductFromCache: (pixelId: string, productId: string) => Promise<InternalProduct | undefined>;
|
|
7
|
+
putProductInCache: (pixelId: string, productId: string, product: InternalProduct, ttlInDays?: number) => Promise<void>;
|
|
8
|
+
deleteProductFromCache: (pixelId: string, productId: string) => Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProductCacheService = void 0;
|
|
4
|
+
const luxon_1 = require("luxon");
|
|
5
|
+
const generic_cache_service_1 = require("../generic-cache-service");
|
|
6
|
+
const libs_1 = require("../../libs");
|
|
7
|
+
class ProductCacheService {
|
|
8
|
+
genericCacheService;
|
|
9
|
+
constructor(cacheLambdaFunctionArn) {
|
|
10
|
+
this.genericCacheService = new generic_cache_service_1.GenericCacheService(cacheLambdaFunctionArn);
|
|
11
|
+
}
|
|
12
|
+
getCacheKey = (pixelId, productId) => {
|
|
13
|
+
return `internal:product:${pixelId}_${productId}`;
|
|
14
|
+
};
|
|
15
|
+
getProductFromCache = async (pixelId, productId) => {
|
|
16
|
+
const cacheKey = this.getCacheKey(pixelId, productId);
|
|
17
|
+
return this.genericCacheService.getCachedData(cacheKey);
|
|
18
|
+
};
|
|
19
|
+
putProductInCache = async (pixelId, productId, product, ttlInDays) => {
|
|
20
|
+
const cacheKey = this.getCacheKey(pixelId, productId);
|
|
21
|
+
const ttl = ttlInDays || 7;
|
|
22
|
+
const expiresAt = luxon_1.DateTime.now().plus({ days: ttl }).toSeconds();
|
|
23
|
+
const productCompressed = (0, libs_1.compressJSON)(product);
|
|
24
|
+
await this.genericCacheService.putCachedData(cacheKey, { productCompressed, expiresAt });
|
|
25
|
+
};
|
|
26
|
+
deleteProductFromCache = async (pixelId, productId) => {
|
|
27
|
+
const cacheKey = this.getCacheKey(pixelId, productId);
|
|
28
|
+
await this.genericCacheService.deleteCachedData(cacheKey);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
exports.ProductCacheService = ProductCacheService;
|
|
32
|
+
//# sourceMappingURL=product-cache-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-cache-service.js","sourceRoot":"","sources":["../../../../src/services/cache/product-cache-service.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,oEAA+D;AAE/D,qCAA0C;AAE1C,MAAa,mBAAmB;IACtB,mBAAmB,CAAsB;IACjD,YAAY,sBAA8B;QACxC,IAAI,CAAC,mBAAmB,GAAG,IAAI,2CAAmB,CAAC,sBAAsB,CAAC,CAAC;IAC7E,CAAC;IACM,WAAW,GAAG,CAAC,OAAe,EAAE,SAAiB,EAAE,EAAE;QAC1D,OAAO,oBAAoB,OAAO,IAAI,SAAS,EAAE,CAAC;IACpD,CAAC,CAAA;IACM,mBAAmB,GAAG,KAAK,EAAE,OAAe,EAAE,SAAiB,EAAwC,EAAE;QAC9G,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAkB,QAAQ,CAAC,CAAC;IAC3E,CAAC,CAAA;IACM,iBAAiB,GAAG,KAAK,EAAE,OAAe,EAAE,SAAiB,EAAE,OAAwB,EAAE,SAAkB,EAAE,EAAE;QACpH,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,CAAC;QAC3B,MAAM,SAAS,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;QACjE,MAAM,iBAAiB,GAAG,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3F,CAAC,CAAA;IACM,sBAAsB,GAAG,KAAK,EAAE,OAAe,EAAE,SAAiB,EAAE,EAAE;QAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC,CAAA;CACF;AAvBD,kDAuBC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Product } from '../../types/shopify-graphql-types/admin.types';
|
|
2
1
|
import Shopify from 'shopify-api-node';
|
|
3
2
|
export declare class ShopifyProductsCacheDbService {
|
|
4
3
|
TABLE_NAME: string;
|
|
@@ -7,14 +6,4 @@ export declare class ShopifyProductsCacheDbService {
|
|
|
7
6
|
getShopifyProductWithCachingREST: (pixelId: string, shop: string, accessToken: string, productId: string) => Promise<Shopify.IProduct | null>;
|
|
8
7
|
getShopifyProductFromCacheREST: (pixelId: string, productId: string) => Promise<Record<string, any> | null>;
|
|
9
8
|
putShopifyProductCacheREST: (pixelId: string, productId: string, product: Shopify.IProduct, ttlInDays?: number) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput | null>;
|
|
10
|
-
getShopifyProductWithCachingGraphQL: (pixelId: string, shop: string, accessToken: string, productId: string) => Promise<Partial<Product> | null>;
|
|
11
|
-
putShopifyProductCacheGraphQL: (pixelId: string, productId: string, product: Partial<Product>, ttlInDays?: number) => Promise<{
|
|
12
|
-
pixelId_productId: string;
|
|
13
|
-
pixelId: string;
|
|
14
|
-
productId: string;
|
|
15
|
-
productCompressed: string | null;
|
|
16
|
-
createdAt: string;
|
|
17
|
-
expiresAt: number;
|
|
18
|
-
}>;
|
|
19
|
-
getShopifyProductFromCacheGraphQL: (pixelId: string, productId: string) => Promise<null>;
|
|
20
9
|
}
|
|
@@ -60,49 +60,6 @@ class ShopifyProductsCacheDbService {
|
|
|
60
60
|
};
|
|
61
61
|
return await clients_1.DynamoDbClient.safePut(this.TABLE_NAME, shopifyProductCache);
|
|
62
62
|
};
|
|
63
|
-
getShopifyProductWithCachingGraphQL = async (pixelId, shop, accessToken, productId) => {
|
|
64
|
-
try {
|
|
65
|
-
const cachedShopifyProduct = await this.getShopifyProductFromCacheGraphQL(pixelId, productId);
|
|
66
|
-
if (cachedShopifyProduct) {
|
|
67
|
-
return cachedShopifyProduct;
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
const productRes = await clients_1.ShopifyClient.getProductGraphQL(shop, accessToken, productId);
|
|
71
|
-
if (productRes?.product) {
|
|
72
|
-
helpers_1.Logger.info('getShopifyProductWithCachingGraphQL - productRes', { productRes });
|
|
73
|
-
const product = productRes.product;
|
|
74
|
-
return product;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return null;
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
80
|
-
helpers_1.Logger.error('Failed getShopifyProductWithCachingGraphQL', { error });
|
|
81
|
-
return null;
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
putShopifyProductCacheGraphQL = async (pixelId, productId, product, ttlInDays) => {
|
|
85
|
-
const ttl = ttlInDays || 7;
|
|
86
|
-
const expiresAt = luxon_1.DateTime.now().plus({ days: ttl }).toSeconds();
|
|
87
|
-
const shopifyProductCache = {
|
|
88
|
-
pixelId_productId: `${pixelId}_${productId}`,
|
|
89
|
-
pixelId,
|
|
90
|
-
productId,
|
|
91
|
-
productCompressed: (0, libs_1.compressJSON)(product),
|
|
92
|
-
createdAt: (0, libs_1.getCurrentTimestamp)(),
|
|
93
|
-
expiresAt
|
|
94
|
-
};
|
|
95
|
-
return shopifyProductCache;
|
|
96
|
-
};
|
|
97
|
-
getShopifyProductFromCacheGraphQL = async (pixelId, productId) => {
|
|
98
|
-
try {
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
helpers_1.Logger.error('Failed getShopifyProductCacheGraphQL', { keyName: this.KEY_NAME, pixelId, productId, error });
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
63
|
}
|
|
107
64
|
exports.ShopifyProductsCacheDbService = ShopifyProductsCacheDbService;
|
|
108
65
|
//# sourceMappingURL=shopify-products-cache-db-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify-products-cache-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/shopify-products-cache-db-service.ts"],"names":[],"mappings":";;;AAAA,2CAA8D;AAC9D,qCAA+E;AAC/E,iCAAiC;AACjC,2CAAuC;
|
|
1
|
+
{"version":3,"file":"shopify-products-cache-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/shopify-products-cache-db-service.ts"],"names":[],"mappings":";;;AAAA,2CAA8D;AAC9D,qCAA+E;AAC/E,iCAAiC;AACjC,2CAAuC;AAGvC,MAAa,6BAA6B;IACjC,UAAU,CAAS;IACnB,QAAQ,CAAS;IAExB,YAAY,SAAiB,EAAE,OAAe;QAC5C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IACM,gCAAgC,GAAG,KAAK,EAAE,OAAe,EAAE,IAAY,EAAE,WAAmB,EAAE,SAAiB,EAAoC,EAAE;QAC1J,IAAI;YACF,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC3F,IAAI,oBAAoB,EAAE;gBACxB,OAAO,oBAAoB,CAAC,OAA2B,CAAC;aACzD;iBAAM;gBACL,MAAM,UAAU,GAAG,MAAM,uBAAa,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;gBACpF,IAAI,UAAU,CAAC,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;oBAC1D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;oBACxC,MAAM,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;oBACnE,OAAO,OAAO,CAAC;iBAChB;aACF;YAED,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACd,gBAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;SACb;IACH,CAAC,CAAC;IAEK,8BAA8B,GAAG,KAAK,EAAE,OAAe,EAAE,SAAiB,EAAE,EAAE;QACnF,IAAI;YACF,MAAM,aAAa,GAAG,MAAM,wBAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,OAAO,IAAI,SAAS,EAAE,CAAC,CAAC;YAC9G,IAAI,aAAa,EAAE;gBACjB,aAAa,CAAC,OAAO,GAAG,IAAA,qBAAc,EAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;gBACxE,OAAO,aAAa,CAAC;aACtB;YACD,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACd,gBAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACzG,OAAO,IAAI,CAAC;SACb;IACH,CAAC,CAAC;IAEK,0BAA0B,GAAG,KAAK,EAAE,OAAe,EAAE,SAAiB,EAAE,OAAyB,EAAE,SAAkB,EAAE,EAAE;QAC9H,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,CAAC;QAC3B,MAAM,SAAS,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;QAEjE,MAAM,mBAAmB,GAAG;YAC1B,iBAAiB,EAAE,GAAG,OAAO,IAAI,SAAS,EAAE;YAC5C,OAAO;YACP,SAAS;YACT,iBAAiB,EAAE,IAAA,mBAAY,EAAC,OAAO,CAAC;YACxC,SAAS,EAAE,IAAA,0BAAmB,GAAE;YAChC,SAAS;SACV,CAAC;QACF,OAAO,MAAM,wBAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAC5E,CAAC,CAAC;CA8DH;AAtHD,sEAsHC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare class GenericCacheService {
|
|
2
|
+
private cacheLambdaClient;
|
|
3
|
+
private lambdaInvokeClient;
|
|
4
|
+
constructor(cacheLambdaFunctionArn: string);
|
|
5
|
+
getCachedData: <T>(cacheKey: string) => Promise<T | undefined>;
|
|
6
|
+
putCachedData: <T>(cacheKey: string, data: T) => Promise<void>;
|
|
7
|
+
deleteCachedData: (cacheKey: string) => Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GenericCacheService = void 0;
|
|
4
|
+
const clients_1 = require("../clients");
|
|
5
|
+
const helpers_1 = require("../helpers");
|
|
6
|
+
class GenericCacheService {
|
|
7
|
+
cacheLambdaClient;
|
|
8
|
+
lambdaInvokeClient;
|
|
9
|
+
constructor(cacheLambdaFunctionArn) {
|
|
10
|
+
this.cacheLambdaClient = new clients_1.CacheLambdaClient(cacheLambdaFunctionArn);
|
|
11
|
+
this.lambdaInvokeClient = new clients_1.LambdaInvokeClient();
|
|
12
|
+
}
|
|
13
|
+
getCachedData = async (cacheKey) => {
|
|
14
|
+
const start = performance.now();
|
|
15
|
+
const cacheResponse = await this.cacheLambdaClient.invokeGet(cacheKey);
|
|
16
|
+
const end = performance.now();
|
|
17
|
+
helpers_1.Logger.debug('getCachedData', { cacheKey, cacheResponse, duration: end - start });
|
|
18
|
+
if (cacheResponse && cacheResponse.responseData) {
|
|
19
|
+
return cacheResponse.responseData;
|
|
20
|
+
}
|
|
21
|
+
return undefined;
|
|
22
|
+
};
|
|
23
|
+
putCachedData = async (cacheKey, data) => {
|
|
24
|
+
await this.cacheLambdaClient.invokeSet(cacheKey, JSON.stringify(data));
|
|
25
|
+
};
|
|
26
|
+
deleteCachedData = async (cacheKey) => {
|
|
27
|
+
await this.cacheLambdaClient.invokeDelete(cacheKey);
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
exports.GenericCacheService = GenericCacheService;
|
|
31
|
+
//# sourceMappingURL=generic-cache-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-cache-service.js","sourceRoot":"","sources":["../../../src/services/generic-cache-service.ts"],"names":[],"mappings":";;;AAAA,wCAAmE;AACnE,wCAAoC;AAEpC,MAAa,mBAAmB;IAEtB,iBAAiB,CAAoB;IACrC,kBAAkB,CAAqB;IAE/C,YAAY,sBAA8B;QACxC,IAAI,CAAC,iBAAiB,GAAG,IAAI,2BAAiB,CAAC,sBAAsB,CAAC,CAAC;QACvE,IAAI,CAAC,kBAAkB,GAAG,IAAI,4BAAkB,EAAE,CAAC;IACrD,CAAC;IAEM,aAAa,GAAG,KAAK,EAAK,QAAgB,EAA0B,EAAE;QAC3E,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC9B,gBAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;QAClF,IAAI,aAAa,IAAI,aAAa,CAAC,YAAY,EAAE;YAC/C,OAAO,aAAa,CAAC,YAAiB,CAAC;SACxC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAA;IACM,aAAa,GAAG,KAAK,EAAK,QAAgB,EAAE,IAAO,EAAE,EAAE;QAC5D,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,CAAC,CAAA;IACM,gBAAgB,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;QACnD,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC,CAAA;CACF;AA1BD,kDA0BC"}
|
|
@@ -2,4 +2,7 @@ export * from './eventbridge-integration-service.js';
|
|
|
2
2
|
export * from './ipdata-lookup-service.js';
|
|
3
3
|
export * from './log-event-service.js';
|
|
4
4
|
export * from './metric-event-service.js';
|
|
5
|
+
export * from './generic-cache-service.js';
|
|
5
6
|
export * from './db';
|
|
7
|
+
export * from './shopify';
|
|
8
|
+
export * from './cache';
|
|
@@ -18,5 +18,8 @@ __exportStar(require("./eventbridge-integration-service.js"), exports);
|
|
|
18
18
|
__exportStar(require("./ipdata-lookup-service.js"), exports);
|
|
19
19
|
__exportStar(require("./log-event-service.js"), exports);
|
|
20
20
|
__exportStar(require("./metric-event-service.js"), exports);
|
|
21
|
+
__exportStar(require("./generic-cache-service.js"), exports);
|
|
21
22
|
__exportStar(require("./db"), exports);
|
|
23
|
+
__exportStar(require("./shopify"), exports);
|
|
24
|
+
__exportStar(require("./cache"), exports);
|
|
22
25
|
//# sourceMappingURL=index.js.map
|