From 26771f26abacb89a440c1e86974fe885818ef5d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20J=C3=A4ggi?= Date: Sun, 10 Dec 2023 07:44:20 +0100 Subject: [PATCH] fix: allow sorting for get audits for site --- .../spacecat-shared-data-access/src/index.d.ts | 4 +++- .../src/service/audits/accessPatterns.js | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/spacecat-shared-data-access/src/index.d.ts b/packages/spacecat-shared-data-access/src/index.d.ts index d1212d909..3a967add5 100644 --- a/packages/spacecat-shared-data-access/src/index.d.ts +++ b/packages/spacecat-shared-data-access/src/index.d.ts @@ -34,13 +34,15 @@ export interface Site { isLive: () => boolean; setAudits: (audits: Audit[]) => Site; toggleLive: () => Site; + updateGitHubURL: (gitHubURL: string) => Site; updateImsOrgId: (imsOrgId: string) => Site; } export interface DataAccess { getAuditsForSite: ( siteId: string, - auditType?: string + auditType?: string, + ascending?: boolean, ) => Promise; getLatestAuditForSite: ( siteId: string, diff --git a/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js b/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js index 8be137769..f8f781344 100644 --- a/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js +++ b/packages/spacecat-shared-data-access/src/service/audits/accessPatterns.js @@ -10,7 +10,7 @@ * governing permissions and limitations under the License. */ -import { isObject } from '@adobe/spacecat-shared-utils'; +import { hasText, isObject } from '@adobe/spacecat-shared-utils'; import { AuditDto } from '../../dto/audit.js'; import { createAudit } from '../../models/audit.js'; @@ -24,19 +24,29 @@ import { createAudit } from '../../models/audit.js'; * @param {Logger} log - The logger. * @param {string} siteId - The ID of the site for which audits are being retrieved. * @param {string} [auditType] - Optional. The type of audits to retrieve. + * @param {boolean} [ascending] - Optional. Determines if the audits should be sorted + * ascending. Default is true. * @returns {Promise[]>} A promise that resolves to an array of audits * for the specified site. */ -export const getAuditsForSite = async (dynamoClient, config, log, siteId, auditType) => { +export const getAuditsForSite = async ( + dynamoClient, + config, + log, + siteId, + auditType, + ascending = true, +) => { const queryParams = { TableName: config.tableNameAudits, KeyConditionExpression: 'siteId = :siteId', ExpressionAttributeValues: { ':siteId': siteId, }, + ScanIndexForward: ascending, // Sorts ascending if true, descending if false }; - if (auditType !== undefined) { + if (hasText(auditType)) { queryParams.KeyConditionExpression += ' AND begins_with(SK, :auditType)'; queryParams.ExpressionAttributeValues[':auditType'] = `${auditType}#`; }