UNPKG

sfcc-cip-analytics-client

Version:

SFCC Commerce Intelligence Platform Analytics Client

51 lines (50 loc) 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.queryOcapiRequests = void 0; const types_1 = require("../types"); const helpers_1 = require("../helpers"); /** * Query OCAPI performance metrics to monitor system health and customer experience * Business Question: Is our system performing well enough to support customer experience? * Primary users: Operations teams, Engineering * @param client The Avatica client instance (must have an open connection) * @param params Query parameters including siteId and dateRange * @param batchSize Size of each batch to yield (default: 100) */ const queryOcapiRequests = async function* queryOcapiRequests(client, params, batchSize = 100) { const { sql, parameters } = queryOcapiRequests.QUERY(params); yield* (0, helpers_1.executeParameterizedQuery)(client, (0, types_1.cleanSQL)(sql), parameters, batchSize); }; exports.queryOcapiRequests = queryOcapiRequests; exports.queryOcapiRequests.metadata = { name: "ocapi-requests", description: "Analyze API performance including response times and request volumes", category: "Technical Analytics", requiredParams: ["siteId", "from", "to"], }; exports.queryOcapiRequests.QUERY = (params) => { (0, helpers_1.validateRequiredParams)(params, ["siteId", "dateRange"]); const { startDate, endDate } = (0, helpers_1.formatDateRange)(params.dateRange); const sql = ` SELECT o.request_date, o.api_name, o.api_resource, SUM(o.num_requests) as total_requests, SUM(o.response_time) as total_response_time, CASE WHEN SUM(o.num_requests) > 0 THEN SUM(o.response_time) / SUM(o.num_requests) ELSE 0 END as avg_response_time, o.client_id FROM ccdw_aggr_ocapi_request o JOIN ccdw_dim_site s ON s.site_id = o.site_id WHERE o.request_date >= '${startDate}' AND o.request_date <= '${endDate}' AND s.nsite_id = '${params.siteId}' GROUP BY o.request_date, o.api_name, o.api_resource, o.client_id ORDER BY total_requests DESC `; return { sql, parameters: [], }; };