From 913a52ccd8a8a35b39b87703085d383ddc3422b0 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 16 Jan 2025 10:26:59 -0800 Subject: [PATCH 01/87] update id broken --- lib/lambda/update/updatePackage.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/lambda/update/updatePackage.ts b/lib/lambda/update/updatePackage.ts index 62eba97ad..1ec6118ba 100644 --- a/lib/lambda/update/updatePackage.ts +++ b/lib/lambda/update/updatePackage.ts @@ -119,10 +119,14 @@ const sendUpdateIdMessage = async ({ } // use event of current package to determine how ID should be formatted const packageEvent = await getPackageType(currentPackage._id); + console.log(packageEvent, "PACKAGE EVENT?"); const packageSubmissionTypeSchema = events[packageEvent as keyof typeof events].baseSchema; + console.log(packageSubmissionTypeSchema, "SCHEMA???"); const idSchema = packageSubmissionTypeSchema.shape.id; + console.log(idSchema, "ID SCHEMA???"); const parsedId = idSchema.safeParse(updatedId); + console.log(parsedId, "PARSED IDDD"); if (!parsedId.success) { return response({ @@ -132,6 +136,7 @@ const sendUpdateIdMessage = async ({ } await sendDeleteMessage(currentPackage._id); + console.log("JUST DELETED"); await produceMessage( topicName, updatedId, From 000b553ca68e5f678535b910ede22f6090359450 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 16 Jan 2025 11:16:33 -0800 Subject: [PATCH 02/87] ad dlog --- lib/lambda/update/updatePackage.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/lambda/update/updatePackage.ts b/lib/lambda/update/updatePackage.ts index 1ec6118ba..ab4a8db5d 100644 --- a/lib/lambda/update/updatePackage.ts +++ b/lib/lambda/update/updatePackage.ts @@ -94,6 +94,7 @@ const sendUpdateIdMessage = async ({ if (!topicName) { throw new Error("Topic name is not defined"); } + console.log("AM I IN HERE"); // ID and changeMade are excluded; the rest of the object has to be spread into the new package const { id: _id, From 4508cacfe253bc8a9a310e1ee08e25b322d102db Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 16 Jan 2025 11:38:44 -0800 Subject: [PATCH 03/87] log --- lib/lambda/update/updatePackage.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/lambda/update/updatePackage.ts b/lib/lambda/update/updatePackage.ts index ab4a8db5d..c5af7fc16 100644 --- a/lib/lambda/update/updatePackage.ts +++ b/lib/lambda/update/updatePackage.ts @@ -102,7 +102,7 @@ const sendUpdateIdMessage = async ({ origin: _origin, ...remainingFields } = currentPackage._source; - + console.log(currentPackage, "CURRENT PACKAGE??"); if (updatedId === currentPackage._id) { return response({ statusCode: 400, @@ -118,6 +118,7 @@ const sendUpdateIdMessage = async ({ body: { message: "This ID already exists" }, }); } + console.log("AFTER HERE"); // use event of current package to determine how ID should be formatted const packageEvent = await getPackageType(currentPackage._id); console.log(packageEvent, "PACKAGE EVENT?"); From 2e9a42744b629962dfffe3ca8bb590891943ecfe Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 16 Jan 2025 11:51:33 -0800 Subject: [PATCH 04/87] log --- lib/lambda/update/updatePackage.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/lambda/update/updatePackage.ts b/lib/lambda/update/updatePackage.ts index c5af7fc16..9b5f5ae74 100644 --- a/lib/lambda/update/updatePackage.ts +++ b/lib/lambda/update/updatePackage.ts @@ -112,6 +112,7 @@ const sendUpdateIdMessage = async ({ // check if a package with this new ID already exists const packageExists = await getPackage(updatedId); + console.log(packageExists, "WHAT IS THIS"); if (packageExists?.found) { return response({ statusCode: 400, From 83f8839626e8e599e43d98a050f199f3fa6d9a8f Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 16 Jan 2025 12:20:53 -0800 Subject: [PATCH 05/87] adjust logic --- lib/lambda/update/updatePackage.ts | 66 +++++++++++++++--------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/lib/lambda/update/updatePackage.ts b/lib/lambda/update/updatePackage.ts index 9b5f5ae74..a1e322650 100644 --- a/lib/lambda/update/updatePackage.ts +++ b/lib/lambda/update/updatePackage.ts @@ -120,39 +120,41 @@ const sendUpdateIdMessage = async ({ }); } console.log("AFTER HERE"); - // use event of current package to determine how ID should be formatted - const packageEvent = await getPackageType(currentPackage._id); - console.log(packageEvent, "PACKAGE EVENT?"); - const packageSubmissionTypeSchema = events[packageEvent as keyof typeof events].baseSchema; - console.log(packageSubmissionTypeSchema, "SCHEMA???"); - - const idSchema = packageSubmissionTypeSchema.shape.id; - console.log(idSchema, "ID SCHEMA???"); - const parsedId = idSchema.safeParse(updatedId); - console.log(parsedId, "PARSED IDDD"); - - if (!parsedId.success) { - return response({ - statusCode: 400, - body: parsedId.error.message, - }); - } + if (packageExists === undefined || !packageExists.found) { + // use event of current package to determine how ID should be formatted + const packageEvent = await getPackageType(currentPackage._id); + console.log(packageEvent, "PACKAGE EVENT?"); + const packageSubmissionTypeSchema = events[packageEvent as keyof typeof events].baseSchema; + console.log(packageSubmissionTypeSchema, "SCHEMA???"); + + const idSchema = packageSubmissionTypeSchema.shape.id; + console.log(idSchema, "ID SCHEMA???"); + const parsedId = idSchema.safeParse(updatedId); + console.log(parsedId, "PARSED IDDD"); + + if (!parsedId.success) { + return response({ + statusCode: 400, + body: parsedId.error.message, + }); + } - await sendDeleteMessage(currentPackage._id); - console.log("JUST DELETED"); - await produceMessage( - topicName, - updatedId, - JSON.stringify({ - id: updatedId, - idToBeUpdated: currentPackage._id, - ...remainingFields, - origin: "OneMAC", - changeMade: "ID has been updated.", - isAdminChange: true, - adminChangeType: "update-id", - }), - ); + await sendDeleteMessage(currentPackage._id); + console.log("JUST DELETED"); + await produceMessage( + topicName, + updatedId, + JSON.stringify({ + id: updatedId, + idToBeUpdated: currentPackage._id, + ...remainingFields, + origin: "OneMAC", + changeMade: "ID has been updated.", + isAdminChange: true, + adminChangeType: "update-id", + }), + ); + } return response({ statusCode: 200, From e65da1cfe24fbd9ea31baf332c170b703206d91f Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 16 Jan 2025 12:51:35 -0800 Subject: [PATCH 06/87] hm --- lib/lambda/update/updatePackage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lambda/update/updatePackage.ts b/lib/lambda/update/updatePackage.ts index a1e322650..fdb7302ba 100644 --- a/lib/lambda/update/updatePackage.ts +++ b/lib/lambda/update/updatePackage.ts @@ -112,7 +112,7 @@ const sendUpdateIdMessage = async ({ // check if a package with this new ID already exists const packageExists = await getPackage(updatedId); - console.log(packageExists, "WHAT IS THIS"); + // console.log(packageExists, "WHAT IS THIS"); if (packageExists?.found) { return response({ statusCode: 400, From 19992a619505fab4e5be2a9700ccc0ef63b4ff59 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 16 Jan 2025 13:01:48 -0800 Subject: [PATCH 07/87] why --- lib/lambda/update/updatePackage.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/lambda/update/updatePackage.ts b/lib/lambda/update/updatePackage.ts index fdb7302ba..8f7b12c65 100644 --- a/lib/lambda/update/updatePackage.ts +++ b/lib/lambda/update/updatePackage.ts @@ -109,10 +109,10 @@ const sendUpdateIdMessage = async ({ body: { message: "New ID required to update package" }, }); } - +console.log("BEFORE"); // check if a package with this new ID already exists const packageExists = await getPackage(updatedId); - // console.log(packageExists, "WHAT IS THIS"); + console.log(packageExists, "WHAT IS THIS"); if (packageExists?.found) { return response({ statusCode: 400, From 048b0917774748540ec1871e5ef0a70b5f1fdfc4 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 16 Jan 2025 13:21:52 -0800 Subject: [PATCH 08/87] log getpackage --- lib/libs/api/package/getPackage.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/libs/api/package/getPackage.ts b/lib/libs/api/package/getPackage.ts index 5ca6d28c2..64166adf3 100644 --- a/lib/libs/api/package/getPackage.ts +++ b/lib/libs/api/package/getPackage.ts @@ -7,8 +7,9 @@ export interface ExtendedItemResult extends ItemResult { } export const getPackage = async (id: string): Promise => { const { domain, index } = getDomainAndNamespace("main"); - +console.log(domain, "DOMAIN"); +console.log(index, "INDEX"); const packageResult = await os.getItem(domain, index, id); - + console.log(packageResult, "WHAT?"); return packageResult; }; From 0fa8543b17b2b1a8c3c0412018070264ce4f9aad Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 16 Jan 2025 13:33:55 -0800 Subject: [PATCH 09/87] logs --- lib/lambda/update/updatePackage.ts | 1 + lib/libs/api/package/getPackage.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/lambda/update/updatePackage.ts b/lib/lambda/update/updatePackage.ts index 8f7b12c65..430418d23 100644 --- a/lib/lambda/update/updatePackage.ts +++ b/lib/lambda/update/updatePackage.ts @@ -110,6 +110,7 @@ const sendUpdateIdMessage = async ({ }); } console.log("BEFORE"); +console.log(updatedId, "UPDATED ID IN FUNC??"); // check if a package with this new ID already exists const packageExists = await getPackage(updatedId); console.log(packageExists, "WHAT IS THIS"); diff --git a/lib/libs/api/package/getPackage.ts b/lib/libs/api/package/getPackage.ts index 64166adf3..e012cef07 100644 --- a/lib/libs/api/package/getPackage.ts +++ b/lib/libs/api/package/getPackage.ts @@ -9,6 +9,7 @@ export const getPackage = async (id: string): Promise => const { domain, index } = getDomainAndNamespace("main"); console.log(domain, "DOMAIN"); console.log(index, "INDEX"); +console.log(id, "WHATS THE ID"); const packageResult = await os.getItem(domain, index, id); console.log(packageResult, "WHAT?"); return packageResult; From 4805e7cf0de1e77bd28ad1ad4e4b3bae12ad5484 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 16 Jan 2025 13:41:38 -0800 Subject: [PATCH 10/87] revert? --- lib/lambda/update/updatePackage.ts | 72 +++++++++++++++--------------- 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/lib/lambda/update/updatePackage.ts b/lib/lambda/update/updatePackage.ts index 430418d23..d1300c62e 100644 --- a/lib/lambda/update/updatePackage.ts +++ b/lib/lambda/update/updatePackage.ts @@ -109,54 +109,52 @@ const sendUpdateIdMessage = async ({ body: { message: "New ID required to update package" }, }); } -console.log("BEFORE"); -console.log(updatedId, "UPDATED ID IN FUNC??"); + console.log("BEFORE"); + console.log(updatedId, "UPDATED ID IN FUNC??"); // check if a package with this new ID already exists const packageExists = await getPackage(updatedId); console.log(packageExists, "WHAT IS THIS"); - if (packageExists?.found) { + if (packageExists) { return response({ statusCode: 400, body: { message: "This ID already exists" }, }); } console.log("AFTER HERE"); - if (packageExists === undefined || !packageExists.found) { - // use event of current package to determine how ID should be formatted - const packageEvent = await getPackageType(currentPackage._id); - console.log(packageEvent, "PACKAGE EVENT?"); - const packageSubmissionTypeSchema = events[packageEvent as keyof typeof events].baseSchema; - console.log(packageSubmissionTypeSchema, "SCHEMA???"); - - const idSchema = packageSubmissionTypeSchema.shape.id; - console.log(idSchema, "ID SCHEMA???"); - const parsedId = idSchema.safeParse(updatedId); - console.log(parsedId, "PARSED IDDD"); - - if (!parsedId.success) { - return response({ - statusCode: 400, - body: parsedId.error.message, - }); - } - - await sendDeleteMessage(currentPackage._id); - console.log("JUST DELETED"); - await produceMessage( - topicName, - updatedId, - JSON.stringify({ - id: updatedId, - idToBeUpdated: currentPackage._id, - ...remainingFields, - origin: "OneMAC", - changeMade: "ID has been updated.", - isAdminChange: true, - adminChangeType: "update-id", - }), - ); + // use event of current package to determine how ID should be formatted + const packageEvent = await getPackageType(currentPackage._id); + console.log(packageEvent, "PACKAGE EVENT?"); + const packageSubmissionTypeSchema = events[packageEvent as keyof typeof events].baseSchema; + console.log(packageSubmissionTypeSchema, "SCHEMA???"); + + const idSchema = packageSubmissionTypeSchema.shape.id; + console.log(idSchema, "ID SCHEMA???"); + const parsedId = idSchema.safeParse(updatedId); + console.log(parsedId, "PARSED IDDD"); + + if (!parsedId.success) { + return response({ + statusCode: 400, + body: parsedId.error.message, + }); } + await sendDeleteMessage(currentPackage._id); + console.log("JUST DELETED"); + await produceMessage( + topicName, + updatedId, + JSON.stringify({ + id: updatedId, + idToBeUpdated: currentPackage._id, + ...remainingFields, + origin: "OneMAC", + changeMade: "ID has been updated.", + isAdminChange: true, + adminChangeType: "update-id", + }), + ); + return response({ statusCode: 200, body: { message: `The ID of package ${currentPackage._id} has been updated to ${updatedId}.` }, From d6490e75c931f03e5272c583b4101b9bcc201773 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 16 Jan 2025 14:04:58 -0800 Subject: [PATCH 11/87] log os --- lib/libs/opensearch-lib.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/libs/opensearch-lib.ts b/lib/libs/opensearch-lib.ts index 397172bb3..094464b36 100644 --- a/lib/libs/opensearch-lib.ts +++ b/lib/libs/opensearch-lib.ts @@ -182,7 +182,9 @@ export async function getItem( ): Promise { client = client || (await getClient(host)); const response = await client.get({ id, index }); + console.log(response, "RESPONSE FROM OS"); const item = decodeUtf8(response).body; + console.log(item, "ITEM FROM OS"); if (item.found === false || !item._source) { return undefined; } From 33372ed2fca3557083e9413c579dc66d09053f41 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 16 Jan 2025 14:34:07 -0800 Subject: [PATCH 12/87] log --- lib/libs/opensearch-lib.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/libs/opensearch-lib.ts b/lib/libs/opensearch-lib.ts index 094464b36..3c455fad4 100644 --- a/lib/libs/opensearch-lib.ts +++ b/lib/libs/opensearch-lib.ts @@ -181,6 +181,7 @@ export async function getItem( id: string, ): Promise { client = client || (await getClient(host)); + console.log(client, "CLIENT???"); const response = await client.get({ id, index }); console.log(response, "RESPONSE FROM OS"); const item = decodeUtf8(response).body; From 5cc3ab7e400bb06bd954b8cd204b1cb3035917a8 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 16 Jan 2025 15:03:49 -0800 Subject: [PATCH 13/87] log --- lib/libs/opensearch-lib.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/libs/opensearch-lib.ts b/lib/libs/opensearch-lib.ts index 3c455fad4..1ef656b92 100644 --- a/lib/libs/opensearch-lib.ts +++ b/lib/libs/opensearch-lib.ts @@ -182,6 +182,7 @@ export async function getItem( ): Promise { client = client || (await getClient(host)); console.log(client, "CLIENT???"); + console.log(id, index, "ID AND INDEX???"); const response = await client.get({ id, index }); console.log(response, "RESPONSE FROM OS"); const item = decodeUtf8(response).body; From af2292a6957f9749179f336649325b32ff36baed Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Fri, 17 Jan 2025 08:14:52 -0800 Subject: [PATCH 14/87] client.get stuck --- lib/libs/opensearch-lib.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/libs/opensearch-lib.ts b/lib/libs/opensearch-lib.ts index 1ef656b92..8165ec551 100644 --- a/lib/libs/opensearch-lib.ts +++ b/lib/libs/opensearch-lib.ts @@ -183,6 +183,7 @@ export async function getItem( client = client || (await getClient(host)); console.log(client, "CLIENT???"); console.log(id, index, "ID AND INDEX???"); + console.log('CLIENT STUCK', await client.get({ id, index }) const response = await client.get({ id, index }); console.log(response, "RESPONSE FROM OS"); const item = decodeUtf8(response).body; From aaa4ca4d6f75c3fe7e4b45801d88920f4528df1b Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Fri, 17 Jan 2025 08:19:45 -0800 Subject: [PATCH 15/87] fix --- lib/libs/opensearch-lib.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/libs/opensearch-lib.ts b/lib/libs/opensearch-lib.ts index 8165ec551..1ff1c23e6 100644 --- a/lib/libs/opensearch-lib.ts +++ b/lib/libs/opensearch-lib.ts @@ -183,7 +183,7 @@ export async function getItem( client = client || (await getClient(host)); console.log(client, "CLIENT???"); console.log(id, index, "ID AND INDEX???"); - console.log('CLIENT STUCK', await client.get({ id, index }) + console.log('CLIENT STUCK', await client.get({ id, index }); const response = await client.get({ id, index }); console.log(response, "RESPONSE FROM OS"); const item = decodeUtf8(response).body; From 0ac973947cc9980d1a5694162612993fd94a7fd6 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Fri, 17 Jan 2025 08:24:00 -0800 Subject: [PATCH 16/87] fix --- lib/libs/opensearch-lib.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/libs/opensearch-lib.ts b/lib/libs/opensearch-lib.ts index 1ff1c23e6..248a5c13d 100644 --- a/lib/libs/opensearch-lib.ts +++ b/lib/libs/opensearch-lib.ts @@ -183,7 +183,7 @@ export async function getItem( client = client || (await getClient(host)); console.log(client, "CLIENT???"); console.log(id, index, "ID AND INDEX???"); - console.log('CLIENT STUCK', await client.get({ id, index }); + console.log("CLIENT STUCK", await client.get({ id, index })); const response = await client.get({ id, index }); console.log(response, "RESPONSE FROM OS"); const item = decodeUtf8(response).body; From f8a22c249a83889a4c86a7dd856c653c3dc1e041 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Fri, 17 Jan 2025 09:02:46 -0800 Subject: [PATCH 17/87] log error --- lib/libs/opensearch-lib.ts | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/lib/libs/opensearch-lib.ts b/lib/libs/opensearch-lib.ts index 248a5c13d..2881b35f9 100644 --- a/lib/libs/opensearch-lib.ts +++ b/lib/libs/opensearch-lib.ts @@ -183,15 +183,23 @@ export async function getItem( client = client || (await getClient(host)); console.log(client, "CLIENT???"); console.log(id, index, "ID AND INDEX???"); - console.log("CLIENT STUCK", await client.get({ id, index })); - const response = await client.get({ id, index }); - console.log(response, "RESPONSE FROM OS"); - const item = decodeUtf8(response).body; - console.log(item, "ITEM FROM OS"); - if (item.found === false || !item._source) { - return undefined; + try { + console.log("CLIENT STUCK", await client.get({ id, index })); + const response = await client.get({ id, index }); + console.log(response, "RESPONSE FROM OS"); + const item = decodeUtf8(response).body; + console.log(item, "ITEM FROM OS"); + if (item.found === false || !item._source) { + return undefined; + } + return item; + } catch (error) { + console.error("ERRRORORR", error); + if (error instanceof Error) { + console.error("ERR MSG:", error.message); + } + throw error; } - return item; } export async function getItems(ids: string[]): Promise { From e1fb35f027bcba997cf5e2f40e117e4a4c54bd3b Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Fri, 17 Jan 2025 09:13:06 -0800 Subject: [PATCH 18/87] what --- lib/libs/opensearch-lib.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/libs/opensearch-lib.ts b/lib/libs/opensearch-lib.ts index 2881b35f9..a65de9376 100644 --- a/lib/libs/opensearch-lib.ts +++ b/lib/libs/opensearch-lib.ts @@ -196,7 +196,7 @@ export async function getItem( } catch (error) { console.error("ERRRORORR", error); if (error instanceof Error) { - console.error("ERR MSG:", error.message); + console.error("ERR BODY:", error); } throw error; } From 2472b324b0f8ea3405cd8c0b8d36a38db49031e4 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Fri, 17 Jan 2025 09:47:46 -0800 Subject: [PATCH 19/87] revert --- lib/libs/opensearch-lib.ts | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/lib/libs/opensearch-lib.ts b/lib/libs/opensearch-lib.ts index a65de9376..397172bb3 100644 --- a/lib/libs/opensearch-lib.ts +++ b/lib/libs/opensearch-lib.ts @@ -181,25 +181,12 @@ export async function getItem( id: string, ): Promise { client = client || (await getClient(host)); - console.log(client, "CLIENT???"); - console.log(id, index, "ID AND INDEX???"); - try { - console.log("CLIENT STUCK", await client.get({ id, index })); - const response = await client.get({ id, index }); - console.log(response, "RESPONSE FROM OS"); - const item = decodeUtf8(response).body; - console.log(item, "ITEM FROM OS"); - if (item.found === false || !item._source) { - return undefined; - } - return item; - } catch (error) { - console.error("ERRRORORR", error); - if (error instanceof Error) { - console.error("ERR BODY:", error); - } - throw error; + const response = await client.get({ id, index }); + const item = decodeUtf8(response).body; + if (item.found === false || !item._source) { + return undefined; } + return item; } export async function getItems(ids: string[]): Promise { From 7771b76b744eadd71d458cff7d0b6352595c2549 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Fri, 17 Jan 2025 12:13:39 -0800 Subject: [PATCH 20/87] revert --- lib/libs/api/package/getPackage.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/libs/api/package/getPackage.ts b/lib/libs/api/package/getPackage.ts index e012cef07..5ad516501 100644 --- a/lib/libs/api/package/getPackage.ts +++ b/lib/libs/api/package/getPackage.ts @@ -7,10 +7,7 @@ export interface ExtendedItemResult extends ItemResult { } export const getPackage = async (id: string): Promise => { const { domain, index } = getDomainAndNamespace("main"); -console.log(domain, "DOMAIN"); -console.log(index, "INDEX"); -console.log(id, "WHATS THE ID"); const packageResult = await os.getItem(domain, index, id); - console.log(packageResult, "WHAT?"); + return packageResult; }; From 83e96f9d8b1b2c907632091167be72b7e8409ffe Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 21 Jan 2025 12:04:11 -0800 Subject: [PATCH 21/87] wip --- lib/lambda/submit/splitSPAId.ts | 13 +++++ lib/lambda/submit/submitSplitSPA.ts | 78 +++++++++++++++++++++++++ lib/lambda/update/adminChangeSchemas.ts | 6 ++ lib/lambda/update/updatePackage.ts | 12 +--- lib/libs/api/package/getPackage.ts | 1 + lib/stacks/api.ts | 11 ++++ 6 files changed, 110 insertions(+), 11 deletions(-) create mode 100644 lib/lambda/submit/splitSPAId.ts create mode 100644 lib/lambda/submit/submitSplitSPA.ts diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts new file mode 100644 index 000000000..78ff7f942 --- /dev/null +++ b/lib/lambda/submit/splitSPAId.ts @@ -0,0 +1,13 @@ +import { search } from "libs/opensearch-lib"; +import { getDomainAndNamespace } from "libs/utils"; + +export const getNextSplitSPAId = async (spaId: string) => { + const { domain, index } = getDomainAndNamespace("main"); + const query = { + regexp: { + id: `${spaId}-[a-zA-Z]`, + }, + }; + const matchingPackages = search(domain, index, query); + console.log(matchingPackages, "HELLOOO"); +}; diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts new file mode 100644 index 000000000..ea02240bd --- /dev/null +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -0,0 +1,78 @@ +import { response } from "libs/handler-lib"; +import { APIGatewayEvent } from "aws-lambda"; +import { getPackage } from "libs/api/package"; +// import { produceMessage } from "libs/api/kafka"; +import { ItemResult } from "shared-types/opensearch/main"; +import { getNextSplitSPAId } from "./splitSPAId"; +import { z } from "zod"; + +const sendSubmitSplitSPAMessage = async (currentPackage: ItemResult) => { + const topicName = process.env.topicName as string; + if (!topicName) { + throw new Error("Topic name is not defined"); + } + getNextSplitSPAId(currentPackage._id); + // ID and changeMade are excluded; the rest of the object has to be spread into the new package + // const { + // id: _id, + // changeMade: _changeMade, + // origin: _origin, + // ...remainingFields + // } = currentPackage._source; + + // await produceMessage( + // topicName, + // updatedId, // CHANGE TO ADD ALPHABET + // JSON.stringify({ + // id: updatedId, // CHANGE TO ADD ALPHABET + // idToBeUpdated: currentPackage._id, + // ...remainingFields, + // origin: "OneMAC", + // changeMade: "ID has been updated.", + // isAdminChange: true, + // adminChangeType: "update-id", + // }), + // ); +}; + +const splitSPAEventBodySchema = z.object({ + packageId: z.string(), +}); + +export const handler = async (event: APIGatewayEvent) => { + if (!event.body) { + return response({ + statusCode: 400, + body: { message: "Event body required" }, + }); + } + + try { + const { packageId } = splitSPAEventBodySchema.parse( + event.body === "string" ? JSON.parse(event.body) : event.body, + ); + + if (!packageId) { + return response({ + statusCode: 400, + body: { message: "Package ID to split is required" }, + }); + } + + const currentPackage = await getPackage(packageId); + if (!currentPackage || currentPackage.found == false) { + return response({ + statusCode: 404, + body: { message: "No record found for the given id" }, + }); + } + + return await sendSubmitSplitSPAMessage(currentPackage); + } catch (err) { + console.error("Error has occured modifying package:", err); + return response({ + statusCode: 500, + body: { message: err.message || "Internal Server Error" }, + }); + } +}; diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index 4404d9774..2b3f50179 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -23,6 +23,12 @@ export const updateIdAdminChangeSchema = z }) .and(z.record(z.string(), z.any())); +// TODO +export const splitSPAAdminChangeSchema = z.object({ + id: z.string(), + adminChangeType: z.literal("split-spa"), +}); + export const transformDeleteSchema = (offset: number) => deleteAdminChangeSchema.transform((data) => ({ ...data, diff --git a/lib/lambda/update/updatePackage.ts b/lib/lambda/update/updatePackage.ts index d1300c62e..57f0fd7fb 100644 --- a/lib/lambda/update/updatePackage.ts +++ b/lib/lambda/update/updatePackage.ts @@ -94,7 +94,6 @@ const sendUpdateIdMessage = async ({ if (!topicName) { throw new Error("Topic name is not defined"); } - console.log("AM I IN HERE"); // ID and changeMade are excluded; the rest of the object has to be spread into the new package const { id: _id, @@ -102,35 +101,26 @@ const sendUpdateIdMessage = async ({ origin: _origin, ...remainingFields } = currentPackage._source; - console.log(currentPackage, "CURRENT PACKAGE??"); if (updatedId === currentPackage._id) { return response({ statusCode: 400, body: { message: "New ID required to update package" }, }); } - console.log("BEFORE"); - console.log(updatedId, "UPDATED ID IN FUNC??"); // check if a package with this new ID already exists const packageExists = await getPackage(updatedId); - console.log(packageExists, "WHAT IS THIS"); if (packageExists) { return response({ statusCode: 400, body: { message: "This ID already exists" }, }); } - console.log("AFTER HERE"); // use event of current package to determine how ID should be formatted const packageEvent = await getPackageType(currentPackage._id); - console.log(packageEvent, "PACKAGE EVENT?"); const packageSubmissionTypeSchema = events[packageEvent as keyof typeof events].baseSchema; - console.log(packageSubmissionTypeSchema, "SCHEMA???"); const idSchema = packageSubmissionTypeSchema.shape.id; - console.log(idSchema, "ID SCHEMA???"); const parsedId = idSchema.safeParse(updatedId); - console.log(parsedId, "PARSED IDDD"); if (!parsedId.success) { return response({ @@ -140,7 +130,7 @@ const sendUpdateIdMessage = async ({ } await sendDeleteMessage(currentPackage._id); - console.log("JUST DELETED"); + await produceMessage( topicName, updatedId, diff --git a/lib/libs/api/package/getPackage.ts b/lib/libs/api/package/getPackage.ts index 5ad516501..5ca6d28c2 100644 --- a/lib/libs/api/package/getPackage.ts +++ b/lib/libs/api/package/getPackage.ts @@ -7,6 +7,7 @@ export interface ExtendedItemResult extends ItemResult { } export const getPackage = async (id: string): Promise => { const { domain, index } = getDomainAndNamespace("main"); + const packageResult = await os.getItem(domain, index, id); return packageResult; diff --git a/lib/stacks/api.ts b/lib/stacks/api.ts index bd1a91cb7..12c06c74a 100644 --- a/lib/stacks/api.ts +++ b/lib/stacks/api.ts @@ -282,6 +282,17 @@ export class Api extends cdk.NestedStack { indexNamespace, }, }, + { + id: "submitSplitSPA", + entry: join(__dirname, "../lambda/submit/submitSplitSPA.ts"), + environment: { + topicName, + brokerString, + osDomain: `https://${openSearchDomainEndpoint}`, + indexNamespace, + }, + provisionedConcurrency: 2, + }, ]; const lambdas = lambdaDefinitions.reduce( From e67222bf27a4551cfdaacebc9d0f128d5b501a6d Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 21 Jan 2025 13:20:33 -0800 Subject: [PATCH 22/87] validate id --- lib/lambda/submit/submitSplitSPA.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index ea02240bd..21e9292fe 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -36,7 +36,12 @@ const sendSubmitSplitSPAMessage = async (currentPackage: ItemResult) => { }; const splitSPAEventBodySchema = z.object({ - packageId: z.string(), + packageId: z + .string() + .regex( + /^[A-Z]{2}-\d{2}-\d{4}(-[A-Z0-9]{1,4})?$/, + "ID doesn't match format SS-YY-NNNN or SS-YY-NNNN-XXXX", + ), }); export const handler = async (event: APIGatewayEvent) => { From ff1f1e30f3c58bff8429d0e6c7f55c18288740b3 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 21 Jan 2025 13:29:01 -0800 Subject: [PATCH 23/87] zod error --- lib/lambda/submit/submitSplitSPA.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index 21e9292fe..fab9febb1 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -75,6 +75,12 @@ export const handler = async (event: APIGatewayEvent) => { return await sendSubmitSplitSPAMessage(currentPackage); } catch (err) { console.error("Error has occured modifying package:", err); + if (err instanceof z.ZodError) { + return response({ + statusCode: 400, + body: { message: err.errors }, + }); + } return response({ statusCode: 500, body: { message: err.message || "Internal Server Error" }, From 4dc1c82dc5cf278b312ab83f4526860fdd35d2cd Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 21 Jan 2025 13:38:35 -0800 Subject: [PATCH 24/87] await --- lib/lambda/submit/splitSPAId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index 78ff7f942..1fac95916 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -8,6 +8,6 @@ export const getNextSplitSPAId = async (spaId: string) => { id: `${spaId}-[a-zA-Z]`, }, }; - const matchingPackages = search(domain, index, query); + const matchingPackages = await search(domain, index, query); console.log(matchingPackages, "HELLOOO"); }; From 6e953c8933bb764cceb2c39c8d492e524f9aa16a Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 21 Jan 2025 13:48:57 -0800 Subject: [PATCH 25/87] fix query --- lib/lambda/submit/splitSPAId.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index 1fac95916..64967e061 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -5,7 +5,10 @@ export const getNextSplitSPAId = async (spaId: string) => { const { domain, index } = getDomainAndNamespace("main"); const query = { regexp: { - id: `${spaId}-[a-zA-Z]`, + id: { + value: `${spaId}-[a-zA-Z]`, + flags: "ALL", + }, }, }; const matchingPackages = await search(domain, index, query); From c5d7ab06a7e4074651537d445f789cf5f2903c33 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 21 Jan 2025 14:14:54 -0800 Subject: [PATCH 26/87] fix query again --- lib/lambda/submit/splitSPAId.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index 64967e061..1fac95916 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -5,10 +5,7 @@ export const getNextSplitSPAId = async (spaId: string) => { const { domain, index } = getDomainAndNamespace("main"); const query = { regexp: { - id: { - value: `${spaId}-[a-zA-Z]`, - flags: "ALL", - }, + id: `${spaId}-[a-zA-Z]`, }, }; const matchingPackages = await search(domain, index, query); From 5230203ff4341a9ea0053078ff38326e7fe540ea Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 21 Jan 2025 14:22:08 -0800 Subject: [PATCH 27/87] fix query --- lib/lambda/submit/splitSPAId.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index 1fac95916..39e821b86 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -5,7 +5,9 @@ export const getNextSplitSPAId = async (spaId: string) => { const { domain, index } = getDomainAndNamespace("main"); const query = { regexp: { - id: `${spaId}-[a-zA-Z]`, + id: { + value: `${spaId}-[a-zA-Z]`, + }, }, }; const matchingPackages = await search(domain, index, query); From 9a5cdad94eeb9753fa4b021957be518632b7afbb Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 21 Jan 2025 14:33:12 -0800 Subject: [PATCH 28/87] try keyword --- lib/lambda/submit/splitSPAId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index 39e821b86..0ea0cc0ea 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -5,7 +5,7 @@ export const getNextSplitSPAId = async (spaId: string) => { const { domain, index } = getDomainAndNamespace("main"); const query = { regexp: { - id: { + "id.keyword": { value: `${spaId}-[a-zA-Z]`, }, }, From 8c20893c9188458c9f657ab28a63bd964fd22a56 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 21 Jan 2025 14:48:24 -0800 Subject: [PATCH 29/87] try --- lib/lambda/submit/splitSPAId.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index 0ea0cc0ea..cbe472820 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -5,9 +5,7 @@ export const getNextSplitSPAId = async (spaId: string) => { const { domain, index } = getDomainAndNamespace("main"); const query = { regexp: { - "id.keyword": { - value: `${spaId}-[a-zA-Z]`, - }, + "id.keyword": `${spaId}-[a-zA-Z]`, }, }; const matchingPackages = await search(domain, index, query); From 0157327a8b8ae29b49181404df60a209c9eef7d1 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 07:40:01 -0800 Subject: [PATCH 30/87] query --- lib/lambda/submit/splitSPAId.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index cbe472820..84d26d09b 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -4,8 +4,10 @@ import { getDomainAndNamespace } from "libs/utils"; export const getNextSplitSPAId = async (spaId: string) => { const { domain, index } = getDomainAndNamespace("main"); const query = { - regexp: { - "id.keyword": `${spaId}-[a-zA-Z]`, + query: { + regexp: { + "id.keyword": `${spaId}-[a-zA-Z]`, + }, }, }; const matchingPackages = await search(domain, index, query); From 723e162c0a59c2b94526ee8c62c6e99b1ab0bc3e Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 08:46:31 -0800 Subject: [PATCH 31/87] test --- lib/lambda/submit/splitSPAId.ts | 27 +++++++++++++-- lib/lambda/submit/submitSplitSPA.ts | 52 +++++++++++++++++------------ 2 files changed, 54 insertions(+), 25 deletions(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index 84d26d09b..ffeb6b8bf 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -1,4 +1,5 @@ import { search } from "libs/opensearch-lib"; +import { getPackage } from "libs/api/package"; import { getDomainAndNamespace } from "libs/utils"; export const getNextSplitSPAId = async (spaId: string) => { @@ -6,10 +7,30 @@ export const getNextSplitSPAId = async (spaId: string) => { const query = { query: { regexp: { - "id.keyword": `${spaId}-[a-zA-Z]`, + "id.keyword": `${spaId}-[A-Z]`, // only allow capital letters }, }, }; - const matchingPackages = await search(domain, index, query); - console.log(matchingPackages, "HELLOOO"); + const matchingSplitSPAs = await search(domain, index, query); + + let newSplitSPAId: string; + + if (matchingSplitSPAs.hits.hits.length === 0) { + // make sure package exists + const currentPackage = await getPackage(spaId); + if (currentPackage && currentPackage.found) { + newSplitSPAId = `${spaId}-A`; + return newSplitSPAId; + } + } else { + newSplitSPAId = ""; + console.log(matchingSplitSPAs, "HELLOOO"); + return newSplitSPAId; + } + // } else { + // const ids = matchingSplitSPAs.hits.hits.map((hit: any) => hit._source.id); + // console.log(ids); + // const suffixes = ids.map((id: string) => id.split("-")[1]); + // console.log(suffixes, "LETTERS"); + // } }; diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index fab9febb1..57148ad05 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -1,7 +1,7 @@ import { response } from "libs/handler-lib"; import { APIGatewayEvent } from "aws-lambda"; import { getPackage } from "libs/api/package"; -// import { produceMessage } from "libs/api/kafka"; +import { produceMessage } from "libs/api/kafka"; import { ItemResult } from "shared-types/opensearch/main"; import { getNextSplitSPAId } from "./splitSPAId"; import { z } from "zod"; @@ -11,28 +11,36 @@ const sendSubmitSplitSPAMessage = async (currentPackage: ItemResult) => { if (!topicName) { throw new Error("Topic name is not defined"); } - getNextSplitSPAId(currentPackage._id); - // ID and changeMade are excluded; the rest of the object has to be spread into the new package - // const { - // id: _id, - // changeMade: _changeMade, - // origin: _origin, - // ...remainingFields - // } = currentPackage._source; + try { + const newId = await getNextSplitSPAId(currentPackage._id); + if (!newId) { + throw new Error("Error getting next Split SPA Id"); + } + + // ID and changeMade are excluded; the rest of the object has to be spread into the new package + const { + id: _id, + changeMade: _changeMade, + origin: _origin, + ...remainingFields + } = currentPackage._source; - // await produceMessage( - // topicName, - // updatedId, // CHANGE TO ADD ALPHABET - // JSON.stringify({ - // id: updatedId, // CHANGE TO ADD ALPHABET - // idToBeUpdated: currentPackage._id, - // ...remainingFields, - // origin: "OneMAC", - // changeMade: "ID has been updated.", - // isAdminChange: true, - // adminChangeType: "update-id", - // }), - // ); + await produceMessage( + topicName, + newId, + JSON.stringify({ + id: newId, + idToBeUpdated: currentPackage._id, + ...remainingFields, + origin: "OneMAC", + changeMade: "ID has been updated.", + isAdminChange: true, + adminChangeType: "update-id", + }), + ); + } catch (err) { + console.log("Error creating Split SPA: ", err); + } }; const splitSPAEventBodySchema = z.object({ From 15a65a98b53f7ccbc5256d01e2ba1022ca7ec5e7 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 09:59:32 -0800 Subject: [PATCH 32/87] log --- lib/lambda/submit/splitSPAId.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index ffeb6b8bf..26872247e 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -22,15 +22,17 @@ export const getNextSplitSPAId = async (spaId: string) => { newSplitSPAId = `${spaId}-A`; return newSplitSPAId; } + // } else { + // newSplitSPAId = ""; + // console.log(matchingSplitSPAs, "HELLOOO"); + // return newSplitSPAId; + // } } else { newSplitSPAId = ""; - console.log(matchingSplitSPAs, "HELLOOO"); + const ids = matchingSplitSPAs.hits.hits.map((hit: any) => hit._source.id); + console.log(ids); + const suffixes = ids.map((id: string) => id.split("-")[1]); + console.log(suffixes, "LETTERS"); return newSplitSPAId; } - // } else { - // const ids = matchingSplitSPAs.hits.hits.map((hit: any) => hit._source.id); - // console.log(ids); - // const suffixes = ids.map((id: string) => id.split("-")[1]); - // console.log(suffixes, "LETTERS"); - // } }; From cbd5bbadf6039ce5a4a98d063059f7796c8654f2 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 10:30:47 -0800 Subject: [PATCH 33/87] last index --- lib/lambda/submit/splitSPAId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index 26872247e..18a8bcc17 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -31,7 +31,7 @@ export const getNextSplitSPAId = async (spaId: string) => { newSplitSPAId = ""; const ids = matchingSplitSPAs.hits.hits.map((hit: any) => hit._source.id); console.log(ids); - const suffixes = ids.map((id: string) => id.split("-")[1]); + const suffixes = ids.map((id: string) => id.split("-").at(-1)); console.log(suffixes, "LETTERS"); return newSplitSPAId; } From 1c61dc955f4a910dc00c7deed8c143aa43849b67 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 11:45:56 -0800 Subject: [PATCH 34/87] logic --- lib/lambda/submit/splitSPAId.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index 18a8bcc17..cb53d0b86 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -7,10 +7,11 @@ export const getNextSplitSPAId = async (spaId: string) => { const query = { query: { regexp: { - "id.keyword": `${spaId}-[A-Z]`, // only allow capital letters + "id.keyword": `${spaId}-[A-Z]`, }, }, }; + // get existing split SPAs for this package id const matchingSplitSPAs = await search(domain, index, query); let newSplitSPAId: string; @@ -22,17 +23,15 @@ export const getNextSplitSPAId = async (spaId: string) => { newSplitSPAId = `${spaId}-A`; return newSplitSPAId; } - // } else { - // newSplitSPAId = ""; - // console.log(matchingSplitSPAs, "HELLOOO"); - // return newSplitSPAId; - // } } else { newSplitSPAId = ""; const ids = matchingSplitSPAs.hits.hits.map((hit: any) => hit._source.id); console.log(ids); const suffixes = ids.map((id: string) => id.split("-").at(-1)); - console.log(suffixes, "LETTERS"); + const letterCharCodes = suffixes.map((letter: string, idx: number) => letter.charCodeAt(idx)); + const lastLetter = Math.max(letterCharCodes); + console.log(letterCharCodes, "LETTERS"); + console.log(lastLetter, "last letter"); return newSplitSPAId; } }; From d0de3c0fe62a66a71d6bea7c0674bb4b39d857e8 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 12:41:41 -0800 Subject: [PATCH 35/87] test --- lib/lambda/submit/splitSPAId.ts | 23 +++++++++++++++-------- lib/lambda/submit/submitSplitSPA.ts | 7 +++++++ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index cb53d0b86..df9f5dd66 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -1,5 +1,5 @@ import { search } from "libs/opensearch-lib"; -import { getPackage } from "libs/api/package"; +// import { getPackage } from "libs/api/package"; import { getDomainAndNamespace } from "libs/utils"; export const getNextSplitSPAId = async (spaId: string) => { @@ -18,20 +18,27 @@ export const getNextSplitSPAId = async (spaId: string) => { if (matchingSplitSPAs.hits.hits.length === 0) { // make sure package exists - const currentPackage = await getPackage(spaId); - if (currentPackage && currentPackage.found) { - newSplitSPAId = `${spaId}-A`; - return newSplitSPAId; - } + // const currentPackage = await getPackage(spaId); + // if (currentPackage && currentPackage.found) { + newSplitSPAId = `${spaId}-A`; + return newSplitSPAId; + // } } else { newSplitSPAId = ""; const ids = matchingSplitSPAs.hits.hits.map((hit: any) => hit._source.id); console.log(ids); const suffixes = ids.map((id: string) => id.split("-").at(-1)); const letterCharCodes = suffixes.map((letter: string, idx: number) => letter.charCodeAt(idx)); - const lastLetter = Math.max(letterCharCodes); + const lastLetterCharCode = Math.max(...letterCharCodes); + if (lastLetterCharCode >= 90) { + // edit message + throw new Error("This package can't be further split."); + } + const nextLetter = String.fromCharCode(lastLetterCharCode + 1); + newSplitSPAId = `${spaId}-${nextLetter}`; console.log(letterCharCodes, "LETTERS"); - console.log(lastLetter, "last letter"); + console.log(newSplitSPAId, "NEW SPLIT SPA ID"); + // console.log(lastLetter, "last letter"); return newSplitSPAId; } }; diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index 57148ad05..911a8cfa5 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -80,6 +80,13 @@ export const handler = async (event: APIGatewayEvent) => { }); } + if (currentPackage._source.authority !== "Medicaid SPA") { + return response({ + statusCode: 400, + body: { message: "Record can only be a Medicaid SPA" }, + }); + } + return await sendSubmitSplitSPAMessage(currentPackage); } catch (err) { console.error("Error has occured modifying package:", err); From 1d6c96c9b06ae3058a4231ebb1f5eadca72fd4db Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 13:01:25 -0800 Subject: [PATCH 36/87] cleanup --- lib/lambda/submit/splitSPAId.ts | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index df9f5dd66..13d211e1c 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -1,5 +1,4 @@ import { search } from "libs/opensearch-lib"; -// import { getPackage } from "libs/api/package"; import { getDomainAndNamespace } from "libs/utils"; export const getNextSplitSPAId = async (spaId: string) => { @@ -12,33 +11,29 @@ export const getNextSplitSPAId = async (spaId: string) => { }, }; // get existing split SPAs for this package id - const matchingSplitSPAs = await search(domain, index, query); + const existingSplitSPAs = await search(domain, index, query); let newSplitSPAId: string; - if (matchingSplitSPAs.hits.hits.length === 0) { - // make sure package exists - // const currentPackage = await getPackage(spaId); - // if (currentPackage && currentPackage.found) { + if (existingSplitSPAs.hits.hits.length === 0) { + // first split SPA newSplitSPAId = `${spaId}-A`; - return newSplitSPAId; - // } } else { - newSplitSPAId = ""; - const ids = matchingSplitSPAs.hits.hits.map((hit: any) => hit._source.id); - console.log(ids); + // get list of split SPAs for this package id and extract suffixes (letters) + const ids = existingSplitSPAs.hits.hits.map((hit: any) => hit._source.id); const suffixes = ids.map((id: string) => id.split("-").at(-1)); - const letterCharCodes = suffixes.map((letter: string, idx: number) => letter.charCodeAt(idx)); - const lastLetterCharCode = Math.max(...letterCharCodes); + + // convert to ASCII to find greatest letter + const suffixCharCodes = suffixes.map((letter: string, idx: number) => letter.charCodeAt(idx)); + const lastLetterCharCode = Math.max(...suffixCharCodes); + + // increment letter but not past "Z" if (lastLetterCharCode >= 90) { // edit message throw new Error("This package can't be further split."); } const nextLetter = String.fromCharCode(lastLetterCharCode + 1); newSplitSPAId = `${spaId}-${nextLetter}`; - console.log(letterCharCodes, "LETTERS"); - console.log(newSplitSPAId, "NEW SPLIT SPA ID"); - // console.log(lastLetter, "last letter"); - return newSplitSPAId; } + return newSplitSPAId; }; From 8df846c2ab215baf42c37c73d2d3c054e928674b Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 13:13:25 -0800 Subject: [PATCH 37/87] edit names and sinkmainprocessor --- lib/lambda/sinkMainProcessors.ts | 4 +++- lib/lambda/submit/splitSPAId.ts | 8 ++++---- lib/lambda/submit/submitSplitSPA.ts | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/lambda/sinkMainProcessors.ts b/lib/lambda/sinkMainProcessors.ts index a3e5c2595..2f2ad9966 100644 --- a/lib/lambda/sinkMainProcessors.ts +++ b/lib/lambda/sinkMainProcessors.ts @@ -7,12 +7,14 @@ import { deleteAdminChangeSchema, updateValuesAdminChangeSchema, updateIdAdminChangeSchema, + splitSPAAdminChangeSchema, } from "./update/adminChangeSchemas"; const removeDoubleQuotesSurroundingString = (str: string) => str.replace(/^"|"$/g, ""); const adminRecordSchema = deleteAdminChangeSchema .or(updateValuesAdminChangeSchema) - .or(updateIdAdminChangeSchema); + .or(updateIdAdminChangeSchema) + .or(splitSPAAdminChangeSchema); type OneMacRecord = { id: string; diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index 13d211e1c..bc9b42c38 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -23,16 +23,16 @@ export const getNextSplitSPAId = async (spaId: string) => { const ids = existingSplitSPAs.hits.hits.map((hit: any) => hit._source.id); const suffixes = ids.map((id: string) => id.split("-").at(-1)); - // convert to ASCII to find greatest letter + // convert to ASCII to find latest letter const suffixCharCodes = suffixes.map((letter: string, idx: number) => letter.charCodeAt(idx)); - const lastLetterCharCode = Math.max(...suffixCharCodes); + const latestLetterCharCode = Math.max(...suffixCharCodes); // increment letter but not past "Z" - if (lastLetterCharCode >= 90) { + if (latestLetterCharCode >= 90) { // edit message throw new Error("This package can't be further split."); } - const nextLetter = String.fromCharCode(lastLetterCharCode + 1); + const nextLetter = String.fromCharCode(latestLetterCharCode + 1); newSplitSPAId = `${spaId}-${nextLetter}`; } return newSplitSPAId; diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index 911a8cfa5..01c7d8f6a 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -35,7 +35,7 @@ const sendSubmitSplitSPAMessage = async (currentPackage: ItemResult) => { origin: "OneMAC", changeMade: "ID has been updated.", isAdminChange: true, - adminChangeType: "update-id", + adminChangeType: "split-spa", }), ); } catch (err) { @@ -83,7 +83,7 @@ export const handler = async (event: APIGatewayEvent) => { if (currentPackage._source.authority !== "Medicaid SPA") { return response({ statusCode: 400, - body: { message: "Record can only be a Medicaid SPA" }, + body: { message: "Record must be a Medicaid SPA" }, }); } From 7a109eca83139086ffec72c50056262afbc5389d Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 14:48:25 -0800 Subject: [PATCH 38/87] weird --- lib/lambda/submit/splitSPAId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index bc9b42c38..d9a66cd63 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -25,7 +25,7 @@ export const getNextSplitSPAId = async (spaId: string) => { // convert to ASCII to find latest letter const suffixCharCodes = suffixes.map((letter: string, idx: number) => letter.charCodeAt(idx)); - const latestLetterCharCode = Math.max(...suffixCharCodes); + const latestLetterCharCode = Math.max(suffixCharCodes); // increment letter but not past "Z" if (latestLetterCharCode >= 90) { From 0614c16382632342ff0a9e2e3a368ded711b27ed Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 14:56:35 -0800 Subject: [PATCH 39/87] log --- lib/lambda/submit/splitSPAId.ts | 3 ++- lib/lambda/submit/submitSplitSPA.ts | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index d9a66cd63..ee9b1b042 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -26,13 +26,14 @@ export const getNextSplitSPAId = async (spaId: string) => { // convert to ASCII to find latest letter const suffixCharCodes = suffixes.map((letter: string, idx: number) => letter.charCodeAt(idx)); const latestLetterCharCode = Math.max(suffixCharCodes); - + console.log(latestLetterCharCode, "LATEST"); // increment letter but not past "Z" if (latestLetterCharCode >= 90) { // edit message throw new Error("This package can't be further split."); } const nextLetter = String.fromCharCode(latestLetterCharCode + 1); + console.log(nextLetter, "LETTER?"); newSplitSPAId = `${spaId}-${nextLetter}`; } return newSplitSPAId; diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index 01c7d8f6a..725813442 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -30,10 +30,9 @@ const sendSubmitSplitSPAMessage = async (currentPackage: ItemResult) => { newId, JSON.stringify({ id: newId, - idToBeUpdated: currentPackage._id, ...remainingFields, origin: "OneMAC", - changeMade: "ID has been updated.", + changeMade: "Medicaid split SPA package has been created.", isAdminChange: true, adminChangeType: "split-spa", }), From dd43f022ef9d565d413b1ae79c5c613a6a74845b Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 15:03:40 -0800 Subject: [PATCH 40/87] fix --- lib/lambda/submit/splitSPAId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index ee9b1b042..fbe6d2dc2 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -25,7 +25,7 @@ export const getNextSplitSPAId = async (spaId: string) => { // convert to ASCII to find latest letter const suffixCharCodes = suffixes.map((letter: string, idx: number) => letter.charCodeAt(idx)); - const latestLetterCharCode = Math.max(suffixCharCodes); + const latestLetterCharCode = Math.max(...suffixCharCodes); console.log(latestLetterCharCode, "LATEST"); // increment letter but not past "Z" if (latestLetterCharCode >= 90) { From 0df06788910eb3a301a1693c014ce4ec5bb7ecb9 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 15:08:45 -0800 Subject: [PATCH 41/87] huh --- lib/lambda/submit/splitSPAId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index fbe6d2dc2..70dc166a8 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -22,7 +22,7 @@ export const getNextSplitSPAId = async (spaId: string) => { // get list of split SPAs for this package id and extract suffixes (letters) const ids = existingSplitSPAs.hits.hits.map((hit: any) => hit._source.id); const suffixes = ids.map((id: string) => id.split("-").at(-1)); - + console.log(suffixes, "SUFFIXESSS"); // convert to ASCII to find latest letter const suffixCharCodes = suffixes.map((letter: string, idx: number) => letter.charCodeAt(idx)); const latestLetterCharCode = Math.max(...suffixCharCodes); From 0986323f3932f3a208459b77e2d5990fcc155430 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 15:19:18 -0800 Subject: [PATCH 42/87] log --- lib/lambda/submit/splitSPAId.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index 70dc166a8..c7a408a7a 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -25,6 +25,7 @@ export const getNextSplitSPAId = async (spaId: string) => { console.log(suffixes, "SUFFIXESSS"); // convert to ASCII to find latest letter const suffixCharCodes = suffixes.map((letter: string, idx: number) => letter.charCodeAt(idx)); + console.log(suffixCharCodes, "SUFFIX CHAR CODE"); const latestLetterCharCode = Math.max(...suffixCharCodes); console.log(latestLetterCharCode, "LATEST"); // increment letter but not past "Z" From 05a145b69f2c342fc40b863446fa64507e6ab9a5 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 16:47:03 -0800 Subject: [PATCH 43/87] bug --- lib/lambda/submit/splitSPAId.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index c7a408a7a..5f12b1750 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -22,19 +22,16 @@ export const getNextSplitSPAId = async (spaId: string) => { // get list of split SPAs for this package id and extract suffixes (letters) const ids = existingSplitSPAs.hits.hits.map((hit: any) => hit._source.id); const suffixes = ids.map((id: string) => id.split("-").at(-1)); - console.log(suffixes, "SUFFIXESSS"); + // convert to ASCII to find latest letter - const suffixCharCodes = suffixes.map((letter: string, idx: number) => letter.charCodeAt(idx)); - console.log(suffixCharCodes, "SUFFIX CHAR CODE"); + const suffixCharCodes = suffixes.map((letter: string) => letter.charCodeAt(0)); const latestLetterCharCode = Math.max(...suffixCharCodes); - console.log(latestLetterCharCode, "LATEST"); // increment letter but not past "Z" if (latestLetterCharCode >= 90) { // edit message throw new Error("This package can't be further split."); } const nextLetter = String.fromCharCode(latestLetterCharCode + 1); - console.log(nextLetter, "LETTER?"); newSplitSPAId = `${spaId}-${nextLetter}`; } return newSplitSPAId; From a38381993ecc75ee26145aac0eac49e134300bdd Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Wed, 22 Jan 2025 17:22:16 -0800 Subject: [PATCH 44/87] admin change schema --- lib/lambda/update/adminChangeSchemas.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index 2b3f50179..c27676dbe 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -23,7 +23,6 @@ export const updateIdAdminChangeSchema = z }) .and(z.record(z.string(), z.any())); -// TODO export const splitSPAAdminChangeSchema = z.object({ id: z.string(), adminChangeType: z.literal("split-spa"), @@ -54,3 +53,11 @@ export const transformedUpdateIdSchema = updateIdAdminChangeSchema.transform((da id: `${data.id}`, timestamp: Date.now(), })); + +export const transformedSplitSPASchema = updateIdAdminChangeSchema.transform((data) => ({ + ...data, + event: "split-spa", + packageId: data.id, + id: `${data.id}`, + timestamp: Date.now(), +})); From 8e7fd3cac1104a6af04900d479d5b5f1810d0606 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 23 Jan 2025 08:03:42 -0800 Subject: [PATCH 45/87] missing in schema --- lib/lambda/sinkChangelog.ts | 5 ++++- lib/lambda/update/adminChangeSchemas.ts | 10 ++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/lambda/sinkChangelog.ts b/lib/lambda/sinkChangelog.ts index 03f164b0d..56a4df5db 100644 --- a/lib/lambda/sinkChangelog.ts +++ b/lib/lambda/sinkChangelog.ts @@ -6,6 +6,7 @@ import { transformUpdateValuesSchema, transformDeleteSchema, transformedUpdateIdSchema, + transformedSplitSPASchema, } from "./update/adminChangeSchemas"; import { getPackageChangelog } from "libs/api/package"; @@ -67,7 +68,9 @@ const processAndIndex = async ({ // query all changelog entries for this ID and create copies of all entries with new ID if (record.isAdminChange) { const schema = transformDeleteSchema(offset).or( - transformUpdateValuesSchema(offset).or(transformedUpdateIdSchema), + transformUpdateValuesSchema(offset) + .or(transformedUpdateIdSchema) + .or(transformedSplitSPASchema), ); const result = schema.safeParse(record); diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index c27676dbe..ba15c0815 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -23,10 +23,12 @@ export const updateIdAdminChangeSchema = z }) .and(z.record(z.string(), z.any())); -export const splitSPAAdminChangeSchema = z.object({ - id: z.string(), - adminChangeType: z.literal("split-spa"), -}); +export const splitSPAAdminChangeSchema = z + .object({ + id: z.string(), + adminChangeType: z.literal("split-spa"), + }) + .and(z.record(z.string(), z.any())); export const transformDeleteSchema = (offset: number) => deleteAdminChangeSchema.transform((data) => ({ From 1e12fd2ae2b29b33aadb82430ebff4501715e081 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 23 Jan 2025 08:21:25 -0800 Subject: [PATCH 46/87] idToBeUpdated --- lib/lambda/sinkChangelog.ts | 5 ++++- lib/lambda/submit/submitSplitSPA.ts | 1 + lib/lambda/update/adminChangeSchemas.ts | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/lambda/sinkChangelog.ts b/lib/lambda/sinkChangelog.ts index 56a4df5db..cf916f52e 100644 --- a/lib/lambda/sinkChangelog.ts +++ b/lib/lambda/sinkChangelog.ts @@ -76,7 +76,10 @@ const processAndIndex = async ({ const result = schema.safeParse(record); if (result.success) { - if (result.data.adminChangeType === "update-id") { + if ( + result.data.adminChangeType === "update-id" || + result.data.adminChangeType === "split-spa" + ) { docs.forEach((log) => { const recordOffset = log.id.split("-").at(-1); diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index 725813442..06abb12e8 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -30,6 +30,7 @@ const sendSubmitSplitSPAMessage = async (currentPackage: ItemResult) => { newId, JSON.stringify({ id: newId, + idToBeUpdated: currentPackage._id, ...remainingFields, origin: "OneMAC", changeMade: "Medicaid split SPA package has been created.", diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index ba15c0815..c69c6f0c7 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -27,6 +27,7 @@ export const splitSPAAdminChangeSchema = z .object({ id: z.string(), adminChangeType: z.literal("split-spa"), + idToBeUpdated: z.string(), }) .and(z.record(z.string(), z.any())); From 5dd8135a733a7b98509fd3861e97c070bd7f5e29 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 23 Jan 2025 08:38:21 -0800 Subject: [PATCH 47/87] add changelog type --- lib/lambda/sinkChangelog.ts | 18 +++++++++++++----- .../shared-types/opensearch/changelog/index.ts | 3 ++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/lib/lambda/sinkChangelog.ts b/lib/lambda/sinkChangelog.ts index cf916f52e..871867ce8 100644 --- a/lib/lambda/sinkChangelog.ts +++ b/lib/lambda/sinkChangelog.ts @@ -65,7 +65,6 @@ const processAndIndex = async ({ // Parse the kafka record's value const record = JSON.parse(decodeBase64WithUtf8(value)); - // query all changelog entries for this ID and create copies of all entries with new ID if (record.isAdminChange) { const schema = transformDeleteSchema(offset).or( transformUpdateValuesSchema(offset) @@ -76,10 +75,7 @@ const processAndIndex = async ({ const result = schema.safeParse(record); if (result.success) { - if ( - result.data.adminChangeType === "update-id" || - result.data.adminChangeType === "split-spa" - ) { + if (result.data.adminChangeType === "update-id") { docs.forEach((log) => { const recordOffset = log.id.split("-").at(-1); @@ -89,7 +85,19 @@ const processAndIndex = async ({ packageId: result.data.id, }); }); + // query all changelog entries for this ID and create copies of all entries with new ID + const packageChangelogs = await getPackageChangelog(result.data.idToBeUpdated); + packageChangelogs.hits.hits.forEach((log) => { + const recordOffset = log._id.split("-").at(-1); + docs.push({ + ...log._source, + id: `${result.data.id}-${recordOffset}`, + packageId: result.data.id, + }); + }); + } else if (result.data.adminChangeType === "split-spa") { + // query all changelog entries for this ID and create copies of all entries with new ID const packageChangelogs = await getPackageChangelog(result.data.idToBeUpdated); packageChangelogs.hits.hits.forEach((log) => { diff --git a/lib/packages/shared-types/opensearch/changelog/index.ts b/lib/packages/shared-types/opensearch/changelog/index.ts index f6137b498..6fe001d33 100644 --- a/lib/packages/shared-types/opensearch/changelog/index.ts +++ b/lib/packages/shared-types/opensearch/changelog/index.ts @@ -82,7 +82,8 @@ export type Document = Omit & | "withdraw-rai" | "update-values" | "update-id" - | "delete"; + | "delete" + | "split-spa"; }; export type Response = Res; From d95f0e416bc5eb2b2b96143299f66bdf5b367633 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 23 Jan 2025 08:49:27 -0800 Subject: [PATCH 48/87] zod typo? --- lib/lambda/sinkChangelog.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/lambda/sinkChangelog.ts b/lib/lambda/sinkChangelog.ts index 871867ce8..958f2523c 100644 --- a/lib/lambda/sinkChangelog.ts +++ b/lib/lambda/sinkChangelog.ts @@ -66,11 +66,10 @@ const processAndIndex = async ({ const record = JSON.parse(decodeBase64WithUtf8(value)); if (record.isAdminChange) { - const schema = transformDeleteSchema(offset).or( - transformUpdateValuesSchema(offset) - .or(transformedUpdateIdSchema) - .or(transformedSplitSPASchema), - ); + const schema = transformDeleteSchema(offset) + .or(transformUpdateValuesSchema(offset)) + .or(transformedUpdateIdSchema) + .or(transformedSplitSPASchema); const result = schema.safeParse(record); From 222b8608c2681bb79c94faa7487d52c6c1004b93 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 23 Jan 2025 08:53:20 -0800 Subject: [PATCH 49/87] facepalm --- lib/lambda/sinkChangelog.ts | 17 ++++------------- lib/lambda/update/adminChangeSchemas.ts | 2 +- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/lib/lambda/sinkChangelog.ts b/lib/lambda/sinkChangelog.ts index 958f2523c..f203c18c2 100644 --- a/lib/lambda/sinkChangelog.ts +++ b/lib/lambda/sinkChangelog.ts @@ -74,7 +74,10 @@ const processAndIndex = async ({ const result = schema.safeParse(record); if (result.success) { - if (result.data.adminChangeType === "update-id") { + if ( + result.data.adminChangeType === "update-id" || + result.data.adminChangeType === "split-spa" + ) { docs.forEach((log) => { const recordOffset = log.id.split("-").at(-1); @@ -87,18 +90,6 @@ const processAndIndex = async ({ // query all changelog entries for this ID and create copies of all entries with new ID const packageChangelogs = await getPackageChangelog(result.data.idToBeUpdated); - packageChangelogs.hits.hits.forEach((log) => { - const recordOffset = log._id.split("-").at(-1); - docs.push({ - ...log._source, - id: `${result.data.id}-${recordOffset}`, - packageId: result.data.id, - }); - }); - } else if (result.data.adminChangeType === "split-spa") { - // query all changelog entries for this ID and create copies of all entries with new ID - const packageChangelogs = await getPackageChangelog(result.data.idToBeUpdated); - packageChangelogs.hits.hits.forEach((log) => { const recordOffset = log._id.split("-").at(-1); docs.push({ diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index c69c6f0c7..9dd1bce25 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -57,7 +57,7 @@ export const transformedUpdateIdSchema = updateIdAdminChangeSchema.transform((da timestamp: Date.now(), })); -export const transformedSplitSPASchema = updateIdAdminChangeSchema.transform((data) => ({ +export const transformedSplitSPASchema = splitSPAAdminChangeSchema.transform((data) => ({ ...data, event: "split-spa", packageId: data.id, From 78515923cc123a1b5c1dea7bbc0f2d0fa0393388 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 23 Jan 2025 10:20:13 -0800 Subject: [PATCH 50/87] admin package activity --- lib/lambda/submit/submitSplitSPA.ts | 3 ++- react-app/src/features/package/admin-changes/index.tsx | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index 06abb12e8..59b886c66 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -33,7 +33,8 @@ const sendSubmitSplitSPAMessage = async (currentPackage: ItemResult) => { idToBeUpdated: currentPackage._id, ...remainingFields, origin: "OneMAC", - changeMade: "Medicaid split SPA package has been created.", + changeMade: "OneMAC Admin has added a package to OneMAC.", + changeReason: "Per request from CMS, this package was added to OneMAC.", isAdminChange: true, adminChangeType: "split-spa", }), diff --git a/react-app/src/features/package/admin-changes/index.tsx b/react-app/src/features/package/admin-changes/index.tsx index 798ae1183..8a58032c2 100644 --- a/react-app/src/features/package/admin-changes/index.tsx +++ b/react-app/src/features/package/admin-changes/index.tsx @@ -61,6 +61,8 @@ export const AdminChange: FC = (props) => { } case "legacy-admin-change": return [props.changeType || "Manual Update", AC_LegacyAdminChange]; + case "split-spa": + return ["Package Added", AC_LegacyAdminChange]; default: return [BLANK_VALUE, AC_Update]; } From b567d505b69c513fd98e8f501a55e916dbea2371 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 23 Jan 2025 10:52:16 -0800 Subject: [PATCH 51/87] log changelog pushing, add success response --- lib/lambda/sinkChangelog.ts | 3 ++- lib/lambda/submit/submitSplitSPA.ts | 5 +++++ react-app/src/features/package/admin-changes/index.tsx | 1 - 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/lambda/sinkChangelog.ts b/lib/lambda/sinkChangelog.ts index f203c18c2..88a985b5b 100644 --- a/lib/lambda/sinkChangelog.ts +++ b/lib/lambda/sinkChangelog.ts @@ -79,8 +79,9 @@ const processAndIndex = async ({ result.data.adminChangeType === "split-spa" ) { docs.forEach((log) => { + console.log(log, "WHAT IS LOG"); const recordOffset = log.id.split("-").at(-1); - + console.log(recordOffset, "WHAT RECORD OFFSET"); docs.push({ ...log, id: `${result.data.id}-${recordOffset}`, diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index 59b886c66..3a5de18dd 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -39,6 +39,11 @@ const sendSubmitSplitSPAMessage = async (currentPackage: ItemResult) => { adminChangeType: "split-spa", }), ); + + return response({ + statusCode: 200, + body: { message: `New Medicaid Split SPA ${newId} has been created.` }, + }); } catch (err) { console.log("Error creating Split SPA: ", err); } diff --git a/react-app/src/features/package/admin-changes/index.tsx b/react-app/src/features/package/admin-changes/index.tsx index 8a58032c2..1c5215b99 100644 --- a/react-app/src/features/package/admin-changes/index.tsx +++ b/react-app/src/features/package/admin-changes/index.tsx @@ -49,7 +49,6 @@ export const AC_LegacyAdminChange: FC = (props) = export const AC_Update: FC = () => { return

Coming Soon

; }; - export const AdminChange: FC = (props) => { const [label, Content] = useMemo(() => { switch (props.event) { From 749f1591ef7cf68fdb145fb7ea43a4245a4865d5 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 23 Jan 2025 11:02:13 -0800 Subject: [PATCH 52/87] debug changelog --- lib/lambda/sinkChangelog.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/lambda/sinkChangelog.ts b/lib/lambda/sinkChangelog.ts index 88a985b5b..e1898c13e 100644 --- a/lib/lambda/sinkChangelog.ts +++ b/lib/lambda/sinkChangelog.ts @@ -74,10 +74,12 @@ const processAndIndex = async ({ const result = schema.safeParse(record); if (result.success) { + console.log("IN SUCCESS?"); if ( result.data.adminChangeType === "update-id" || result.data.adminChangeType === "split-spa" ) { + console.log("IN THIS IF???"); docs.forEach((log) => { console.log(log, "WHAT IS LOG"); const recordOffset = log.id.split("-").at(-1); From b1a1eaaeb58f532230cb68895f17645060b3a222 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 23 Jan 2025 11:10:41 -0800 Subject: [PATCH 53/87] log docs --- lib/lambda/sinkChangelog.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/lambda/sinkChangelog.ts b/lib/lambda/sinkChangelog.ts index e1898c13e..38e1a8447 100644 --- a/lib/lambda/sinkChangelog.ts +++ b/lib/lambda/sinkChangelog.ts @@ -80,6 +80,7 @@ const processAndIndex = async ({ result.data.adminChangeType === "split-spa" ) { console.log("IN THIS IF???"); + console.log(docs, "WHAT IS DOCS"); docs.forEach((log) => { console.log(log, "WHAT IS LOG"); const recordOffset = log.id.split("-").at(-1); From 48f83c718e5f49ea95bce955fe26a0ce86390d38 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 23 Jan 2025 11:29:15 -0800 Subject: [PATCH 54/87] change split spa changelog logic --- lib/lambda/sinkChangelog.ts | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/lib/lambda/sinkChangelog.ts b/lib/lambda/sinkChangelog.ts index 38e1a8447..3f9951223 100644 --- a/lib/lambda/sinkChangelog.ts +++ b/lib/lambda/sinkChangelog.ts @@ -74,17 +74,10 @@ const processAndIndex = async ({ const result = schema.safeParse(record); if (result.success) { - console.log("IN SUCCESS?"); - if ( - result.data.adminChangeType === "update-id" || - result.data.adminChangeType === "split-spa" - ) { - console.log("IN THIS IF???"); - console.log(docs, "WHAT IS DOCS"); + if (result.data.adminChangeType === "update-id") { + // push doc with package to soft delete docs.forEach((log) => { - console.log(log, "WHAT IS LOG"); const recordOffset = log.id.split("-").at(-1); - console.log(recordOffset, "WHAT RECORD OFFSET"); docs.push({ ...log, id: `${result.data.id}-${recordOffset}`, @@ -94,6 +87,20 @@ const processAndIndex = async ({ // query all changelog entries for this ID and create copies of all entries with new ID const packageChangelogs = await getPackageChangelog(result.data.idToBeUpdated); + packageChangelogs.hits.hits.forEach((log) => { + const recordOffset = log._id.split("-").at(-1); + docs.push({ + ...log._source, + id: `${result.data.id}-${recordOffset}`, + packageId: result.data.id, + }); + }); + } else if (result.data.adminChangeType === "split-spa") { + // push doc with new split package + docs.push(result.data); + // query all changelog entries for this ID and create copies of all entries with new ID + const packageChangelogs = await getPackageChangelog(result.data.idToBeUpdated); + packageChangelogs.hits.hits.forEach((log) => { const recordOffset = log._id.split("-").at(-1); docs.push({ From 228b08c27a4a853132f7032168deb4748c80e3cb Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Thu, 23 Jan 2025 15:09:22 -0800 Subject: [PATCH 55/87] add tests wip --- lib/lambda/submit/splitSPAId.ts | 1 + lib/lambda/submit/submitSplitSPA.test.ts | 41 ++++++++++++++++++++++++ lib/lambda/submit/submitSplitSPA.ts | 21 ++++++++---- 3 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 lib/lambda/submit/submitSplitSPA.test.ts diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts index 5f12b1750..6c8c8eba1 100644 --- a/lib/lambda/submit/splitSPAId.ts +++ b/lib/lambda/submit/splitSPAId.ts @@ -26,6 +26,7 @@ export const getNextSplitSPAId = async (spaId: string) => { // convert to ASCII to find latest letter const suffixCharCodes = suffixes.map((letter: string) => letter.charCodeAt(0)); const latestLetterCharCode = Math.max(...suffixCharCodes); + // increment letter but not past "Z" if (latestLetterCharCode >= 90) { // edit message diff --git a/lib/lambda/submit/submitSplitSPA.test.ts b/lib/lambda/submit/submitSplitSPA.test.ts new file mode 100644 index 000000000..98db38af0 --- /dev/null +++ b/lib/lambda/submit/submitSplitSPA.test.ts @@ -0,0 +1,41 @@ +import { describe, it, expect, vi, beforeEach } from "vitest"; +import { handler } from "./submitSplitSPA"; +import { APIGatewayEvent } from "node_modules/shared-types"; +import { TEST_CHIP_SPA_ITEM } from "mocks"; + +describe("handler", () => { + beforeEach(() => { + vi.clearAllMocks(); + process.env.topicName = "test-topic"; + }); + + it("should return 400 if event body is missing", async () => { + const event = {} as APIGatewayEvent; + const result = await handler(event); + expect(result?.statusCode).toEqual(400); + }); + + it("should return 400 if package ID is not provided", async () => { + const emptyBody = { body: { packageId: undefined } } as unknown as APIGatewayEvent; + const result = await handler(emptyBody); + expect(result?.statusCode).toEqual(400); + expect(result?.body).toEqual('{"message":"Package ID to split is required"}'); + }); + + it("should return 404 if package ID is not found", async () => { + const invalidPackage = { + body: { packageId: "MD-25-9999" }, + } as unknown as APIGatewayEvent; + const result = await handler(invalidPackage); + expect(result?.statusCode).toEqual(404); + expect(result?.body).toEqual('{"message":"No record found for the given id"}'); + }); + + it("should throw an error if not Medicaid SPA", async () => { + const chipSPAPackage = { + body: { packageId: TEST_CHIP_SPA_ITEM._id }, + } as unknown as APIGatewayEvent; + const result = await handler(chipSPAPackage); + expect(result?.body).toEqual('{"message":"Record must be a Medicaid SPA"}'); + }); +}); diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index 3a5de18dd..0be3dbbc4 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -65,19 +65,26 @@ export const handler = async (event: APIGatewayEvent) => { body: { message: "Event body required" }, }); } - try { - const { packageId } = splitSPAEventBodySchema.parse( - event.body === "string" ? JSON.parse(event.body) : event.body, - ); - - if (!packageId) { + const parseEventBody = (body: unknown) => { + return splitSPAEventBodySchema.parse(typeof body === "string" ? JSON.parse(body) : body); + }; + // const { packageId } = splitSPAEventBodySchema.parse( + // event.body === "string" ? JSON.parse(event.body) : event.body, + // ); + let body = { packageId: "" }; + if (typeof event.body === "string") { + body = JSON.parse(event.body); + } else { + body = event.body; + } + if (!body.packageId) { return response({ statusCode: 400, body: { message: "Package ID to split is required" }, }); } - + const { packageId } = parseEventBody(event.body); const currentPackage = await getPackage(packageId); if (!currentPackage || currentPackage.found == false) { return response({ From 75551303019da3e283d08c1b0470f1dd3c26c60a Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Fri, 24 Jan 2025 09:33:31 -0800 Subject: [PATCH 56/87] clean up and fix error bubbling --- lib/lambda/submit/getNextSplitSPAId.ts | 33 +++++++++++ lib/lambda/submit/splitSPAId.ts | 39 ------------- lib/lambda/submit/submitSplitSPA.ts | 81 +++++++++++--------------- 3 files changed, 68 insertions(+), 85 deletions(-) create mode 100644 lib/lambda/submit/getNextSplitSPAId.ts delete mode 100644 lib/lambda/submit/splitSPAId.ts diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts new file mode 100644 index 000000000..27d7fb632 --- /dev/null +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -0,0 +1,33 @@ +import { search } from "libs/opensearch-lib"; +import { getDomainAndNamespace } from "libs/utils"; +import { cpocs } from "lib/packages/shared-types/opensearch"; + +export const getNextSplitSPAId = async (spaId: string) => { + const { domain, index } = getDomainAndNamespace("main"); + const query = { + query: { + regexp: { + "id.keyword": `${spaId}-[A-Z]`, + }, + }, + }; + // Get existing split SPAs for this package id + const { hits } = await search(domain, index, query); + + // Extract suffixes from existing split SPA IDs + // If there are no split SPAs yet, start at the ASCII character before "A" ("@") + // Convert to ASCII char codes to get latest suffix + const latestSuffixCharCode = hits.hits.reduce((maxCharCode: number, hit: cpocs.ItemResult) => { + const suffix = hit._source.id.toString().split("-").at(-1) ?? "@"; + return Math.max(maxCharCode, suffix.charCodeAt(0)); + }); + + // Increment letter but not past "Z" + // "A-Z" is 65-90 in ASCII + if (latestSuffixCharCode >= 90) { + throw new Error("This package can't be further split."); + } + const nextSuffix = String.fromCharCode(latestSuffixCharCode + 1); + + return `${spaId}-${nextSuffix}`; +}; diff --git a/lib/lambda/submit/splitSPAId.ts b/lib/lambda/submit/splitSPAId.ts deleted file mode 100644 index 6c8c8eba1..000000000 --- a/lib/lambda/submit/splitSPAId.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { search } from "libs/opensearch-lib"; -import { getDomainAndNamespace } from "libs/utils"; - -export const getNextSplitSPAId = async (spaId: string) => { - const { domain, index } = getDomainAndNamespace("main"); - const query = { - query: { - regexp: { - "id.keyword": `${spaId}-[A-Z]`, - }, - }, - }; - // get existing split SPAs for this package id - const existingSplitSPAs = await search(domain, index, query); - - let newSplitSPAId: string; - - if (existingSplitSPAs.hits.hits.length === 0) { - // first split SPA - newSplitSPAId = `${spaId}-A`; - } else { - // get list of split SPAs for this package id and extract suffixes (letters) - const ids = existingSplitSPAs.hits.hits.map((hit: any) => hit._source.id); - const suffixes = ids.map((id: string) => id.split("-").at(-1)); - - // convert to ASCII to find latest letter - const suffixCharCodes = suffixes.map((letter: string) => letter.charCodeAt(0)); - const latestLetterCharCode = Math.max(...suffixCharCodes); - - // increment letter but not past "Z" - if (latestLetterCharCode >= 90) { - // edit message - throw new Error("This package can't be further split."); - } - const nextLetter = String.fromCharCode(latestLetterCharCode + 1); - newSplitSPAId = `${spaId}-${nextLetter}`; - } - return newSplitSPAId; -}; diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index 0be3dbbc4..bdfbff654 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -3,7 +3,7 @@ import { APIGatewayEvent } from "aws-lambda"; import { getPackage } from "libs/api/package"; import { produceMessage } from "libs/api/kafka"; import { ItemResult } from "shared-types/opensearch/main"; -import { getNextSplitSPAId } from "./splitSPAId"; +import { getNextSplitSPAId } from "./getNextSplitSPAId"; import { z } from "zod"; const sendSubmitSplitSPAMessage = async (currentPackage: ItemResult) => { @@ -11,42 +11,38 @@ const sendSubmitSplitSPAMessage = async (currentPackage: ItemResult) => { if (!topicName) { throw new Error("Topic name is not defined"); } - try { - const newId = await getNextSplitSPAId(currentPackage._id); - if (!newId) { - throw new Error("Error getting next Split SPA Id"); - } + const newId = await getNextSplitSPAId(currentPackage._id); + if (!newId) { + throw new Error("Error getting next Split SPA Id"); + } - // ID and changeMade are excluded; the rest of the object has to be spread into the new package - const { - id: _id, - changeMade: _changeMade, - origin: _origin, - ...remainingFields - } = currentPackage._source; + // ID and changeMade are excluded; the rest of the object has to be spread into the new package + const { + id: _id, + changeMade: _changeMade, + origin: _origin, + ...remainingFields + } = currentPackage._source; - await produceMessage( - topicName, - newId, - JSON.stringify({ - id: newId, - idToBeUpdated: currentPackage._id, - ...remainingFields, - origin: "OneMAC", - changeMade: "OneMAC Admin has added a package to OneMAC.", - changeReason: "Per request from CMS, this package was added to OneMAC.", - isAdminChange: true, - adminChangeType: "split-spa", - }), - ); + await produceMessage( + topicName, + newId, + JSON.stringify({ + id: newId, + idToBeUpdated: currentPackage._id, + ...remainingFields, + origin: "OneMAC", + changeMade: "OneMAC Admin has added a package to OneMAC.", + changeReason: "Per request from CMS, this package was added to OneMAC.", + isAdminChange: true, + adminChangeType: "split-spa", + }), + ); - return response({ - statusCode: 200, - body: { message: `New Medicaid Split SPA ${newId} has been created.` }, - }); - } catch (err) { - console.log("Error creating Split SPA: ", err); - } + return response({ + statusCode: 200, + body: { message: `New Medicaid Split SPA ${newId} has been created.` }, + }); }; const splitSPAEventBodySchema = z.object({ @@ -69,22 +65,15 @@ export const handler = async (event: APIGatewayEvent) => { const parseEventBody = (body: unknown) => { return splitSPAEventBodySchema.parse(typeof body === "string" ? JSON.parse(body) : body); }; - // const { packageId } = splitSPAEventBodySchema.parse( - // event.body === "string" ? JSON.parse(event.body) : event.body, - // ); - let body = { packageId: "" }; - if (typeof event.body === "string") { - body = JSON.parse(event.body); - } else { - body = event.body; - } - if (!body.packageId) { + + const { packageId } = parseEventBody(event.body); + if (!packageId) { return response({ statusCode: 400, body: { message: "Package ID to split is required" }, }); } - const { packageId } = parseEventBody(event.body); + const currentPackage = await getPackage(packageId); if (!currentPackage || currentPackage.found == false) { return response({ @@ -100,7 +89,7 @@ export const handler = async (event: APIGatewayEvent) => { }); } - return await sendSubmitSplitSPAMessage(currentPackage); + return sendSubmitSplitSPAMessage(currentPackage); } catch (err) { console.error("Error has occured modifying package:", err); if (err instanceof z.ZodError) { From 3d4af3ccd1b95daba794b0990e5c59344c45a2d0 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Fri, 24 Jan 2025 09:47:57 -0800 Subject: [PATCH 57/87] reference baseschema id shape --- lib/lambda/submit/submitSplitSPA.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index bdfbff654..ec19bec1c 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -3,6 +3,7 @@ import { APIGatewayEvent } from "aws-lambda"; import { getPackage } from "libs/api/package"; import { produceMessage } from "libs/api/kafka"; import { ItemResult } from "shared-types/opensearch/main"; +import { baseSchema } from "lib/packages/shared-types/events/new-medicaid-submission"; import { getNextSplitSPAId } from "./getNextSplitSPAId"; import { z } from "zod"; @@ -46,12 +47,7 @@ const sendSubmitSplitSPAMessage = async (currentPackage: ItemResult) => { }; const splitSPAEventBodySchema = z.object({ - packageId: z - .string() - .regex( - /^[A-Z]{2}-\d{2}-\d{4}(-[A-Z0-9]{1,4})?$/, - "ID doesn't match format SS-YY-NNNN or SS-YY-NNNN-XXXX", - ), + packageId: baseSchema.shape.id, }); export const handler = async (event: APIGatewayEvent) => { From 670f68a6b14e585c95881c785ceb3d60a5610a85 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Fri, 24 Jan 2025 10:01:56 -0800 Subject: [PATCH 58/87] fix import errors and tests wip --- lib/lambda/submit/submitSplitSPA.test.ts | 1 - lib/lambda/submit/submitSplitSPA.ts | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/lambda/submit/submitSplitSPA.test.ts b/lib/lambda/submit/submitSplitSPA.test.ts index 98db38af0..d2baad581 100644 --- a/lib/lambda/submit/submitSplitSPA.test.ts +++ b/lib/lambda/submit/submitSplitSPA.test.ts @@ -19,7 +19,6 @@ describe("handler", () => { const emptyBody = { body: { packageId: undefined } } as unknown as APIGatewayEvent; const result = await handler(emptyBody); expect(result?.statusCode).toEqual(400); - expect(result?.body).toEqual('{"message":"Package ID to split is required"}'); }); it("should return 404 if package ID is not found", async () => { diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index ec19bec1c..fde59357e 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -3,7 +3,8 @@ import { APIGatewayEvent } from "aws-lambda"; import { getPackage } from "libs/api/package"; import { produceMessage } from "libs/api/kafka"; import { ItemResult } from "shared-types/opensearch/main"; -import { baseSchema } from "lib/packages/shared-types/events/new-medicaid-submission"; +// import { baseSchema } from "lib/packages/shared-types/events/new-medicaid-submission"; +import { events } from "shared-types/events"; import { getNextSplitSPAId } from "./getNextSplitSPAId"; import { z } from "zod"; @@ -47,7 +48,7 @@ const sendSubmitSplitSPAMessage = async (currentPackage: ItemResult) => { }; const splitSPAEventBodySchema = z.object({ - packageId: baseSchema.shape.id, + packageId: events["new-medicaid-submission"].baseSchema.shape.id, }); export const handler = async (event: APIGatewayEvent) => { From 2b132e59213f45cc026370d29a5a7ee9ab704870 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Fri, 24 Jan 2025 10:23:23 -0800 Subject: [PATCH 59/87] test after refactor bug --- lib/lambda/submit/getNextSplitSPAId.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index 27d7fb632..7e8cf11f2 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -19,6 +19,8 @@ export const getNextSplitSPAId = async (spaId: string) => { // Convert to ASCII char codes to get latest suffix const latestSuffixCharCode = hits.hits.reduce((maxCharCode: number, hit: cpocs.ItemResult) => { const suffix = hit._source.id.toString().split("-").at(-1) ?? "@"; + console.log(suffix, "SUFFIX RN"); + console.log(maxCharCode, "MAXCHARCODE RN"); return Math.max(maxCharCode, suffix.charCodeAt(0)); }); From 96b707358b07738676c9c7c247cec89c985af4be Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Fri, 24 Jan 2025 10:37:20 -0800 Subject: [PATCH 60/87] test fix --- lib/lambda/submit/getNextSplitSPAId.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index 7e8cf11f2..a1194d0e2 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -18,11 +18,11 @@ export const getNextSplitSPAId = async (spaId: string) => { // If there are no split SPAs yet, start at the ASCII character before "A" ("@") // Convert to ASCII char codes to get latest suffix const latestSuffixCharCode = hits.hits.reduce((maxCharCode: number, hit: cpocs.ItemResult) => { - const suffix = hit._source.id.toString().split("-").at(-1) ?? "@"; + const suffix = hit._source.id.toString().split("-").at(-1) ?? ""; console.log(suffix, "SUFFIX RN"); console.log(maxCharCode, "MAXCHARCODE RN"); return Math.max(maxCharCode, suffix.charCodeAt(0)); - }); + }, "@".charCodeAt(0)); // Increment letter but not past "Z" // "A-Z" is 65-90 in ASCII From 4edbfd9994e941ced2b4ce2f6ba2a90eb0826a7f Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Fri, 24 Jan 2025 10:39:04 -0800 Subject: [PATCH 61/87] fix --- lib/lambda/submit/getNextSplitSPAId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index a1194d0e2..3454c77a6 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -18,7 +18,7 @@ export const getNextSplitSPAId = async (spaId: string) => { // If there are no split SPAs yet, start at the ASCII character before "A" ("@") // Convert to ASCII char codes to get latest suffix const latestSuffixCharCode = hits.hits.reduce((maxCharCode: number, hit: cpocs.ItemResult) => { - const suffix = hit._source.id.toString().split("-").at(-1) ?? ""; + const suffix = hit._source.id.toString().split("-").at(-1) ?? "@"; console.log(suffix, "SUFFIX RN"); console.log(maxCharCode, "MAXCHARCODE RN"); return Math.max(maxCharCode, suffix.charCodeAt(0)); From 33f835e06211564fa25c4ac2d03a672e668f48f3 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 09:58:01 -0800 Subject: [PATCH 62/87] rm logs and update comments --- lib/lambda/sinkChangelog.ts | 8 ++++---- lib/lambda/submit/getNextSplitSPAId.ts | 2 -- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/lambda/sinkChangelog.ts b/lib/lambda/sinkChangelog.ts index 3f9951223..e421aa9a6 100644 --- a/lib/lambda/sinkChangelog.ts +++ b/lib/lambda/sinkChangelog.ts @@ -75,7 +75,7 @@ const processAndIndex = async ({ if (result.success) { if (result.data.adminChangeType === "update-id") { - // push doc with package to soft delete + // Push doc with package being soft deleted docs.forEach((log) => { const recordOffset = log.id.split("-").at(-1); docs.push({ @@ -84,7 +84,7 @@ const processAndIndex = async ({ packageId: result.data.id, }); }); - // query all changelog entries for this ID and create copies of all entries with new ID + // Get all changelog entries for this ID and create copies of all entries with new ID const packageChangelogs = await getPackageChangelog(result.data.idToBeUpdated); packageChangelogs.hits.hits.forEach((log) => { @@ -96,9 +96,9 @@ const processAndIndex = async ({ }); }); } else if (result.data.adminChangeType === "split-spa") { - // push doc with new split package + // Push doc with new split package docs.push(result.data); - // query all changelog entries for this ID and create copies of all entries with new ID + // Get all changelog entries for this ID and create copies of all entries with new ID const packageChangelogs = await getPackageChangelog(result.data.idToBeUpdated); packageChangelogs.hits.hits.forEach((log) => { diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index 3454c77a6..b0b4b3c90 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -19,8 +19,6 @@ export const getNextSplitSPAId = async (spaId: string) => { // Convert to ASCII char codes to get latest suffix const latestSuffixCharCode = hits.hits.reduce((maxCharCode: number, hit: cpocs.ItemResult) => { const suffix = hit._source.id.toString().split("-").at(-1) ?? "@"; - console.log(suffix, "SUFFIX RN"); - console.log(maxCharCode, "MAXCHARCODE RN"); return Math.max(maxCharCode, suffix.charCodeAt(0)); }, "@".charCodeAt(0)); From af412e66058ea0c9156fde8fb3cdfa93141ca49b Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 11:31:31 -0800 Subject: [PATCH 63/87] change body parsing, update timestamps, mod admin schema --- lib/lambda/submit/submitSplitSPA.ts | 9 ++++----- lib/lambda/update/adminChangeSchemas.ts | 3 ++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index fde59357e..2d4a9e752 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -3,7 +3,6 @@ import { APIGatewayEvent } from "aws-lambda"; import { getPackage } from "libs/api/package"; import { produceMessage } from "libs/api/kafka"; import { ItemResult } from "shared-types/opensearch/main"; -// import { baseSchema } from "lib/packages/shared-types/events/new-medicaid-submission"; import { events } from "shared-types/events"; import { getNextSplitSPAId } from "./getNextSplitSPAId"; import { z } from "zod"; @@ -33,6 +32,8 @@ const sendSubmitSplitSPAMessage = async (currentPackage: ItemResult) => { id: newId, idToBeUpdated: currentPackage._id, ...remainingFields, + makoChangedDate: Date.now(), + changedDate: Date.now(), origin: "OneMAC", changeMade: "OneMAC Admin has added a package to OneMAC.", changeReason: "Per request from CMS, this package was added to OneMAC.", @@ -59,11 +60,9 @@ export const handler = async (event: APIGatewayEvent) => { }); } try { - const parseEventBody = (body: unknown) => { - return splitSPAEventBodySchema.parse(typeof body === "string" ? JSON.parse(body) : body); - }; + const body = typeof event.body === "string" ? JSON.parse(event.body) : event.body; + const { packageId } = splitSPAEventBodySchema.parse(body); - const { packageId } = parseEventBody(event.body); if (!packageId) { return response({ statusCode: 400, diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index 9dd1bce25..b57cfb599 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -1,4 +1,5 @@ import { z } from "zod"; +import { events } from "lib/packages/shared-types"; export const deleteAdminChangeSchema = z .object({ @@ -29,7 +30,7 @@ export const splitSPAAdminChangeSchema = z adminChangeType: z.literal("split-spa"), idToBeUpdated: z.string(), }) - .and(z.record(z.string(), z.any())); + .and(events["new-medicaid-submission"].baseSchema); export const transformDeleteSchema = (offset: number) => deleteAdminChangeSchema.transform((data) => ({ From cf01a04de22eb018c8622b9cd2716db94b25cb81 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 11:41:55 -0800 Subject: [PATCH 64/87] fix timestamp --- lib/lambda/update/adminChangeSchemas.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index b57cfb599..4cf63c00b 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -64,4 +64,6 @@ export const transformedSplitSPASchema = splitSPAAdminChangeSchema.transform((da packageId: data.id, id: `${data.id}`, timestamp: Date.now(), + makoChangedDate: Date.now(), + changedDate: Date.now(), })); From c9697e50b000626f6b85c274cd5b0fe48aa6c13f Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 11:50:45 -0800 Subject: [PATCH 65/87] hm --- lib/lambda/update/adminChangeSchemas.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index 4cf63c00b..85eed3d8e 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -30,7 +30,8 @@ export const splitSPAAdminChangeSchema = z adminChangeType: z.literal("split-spa"), idToBeUpdated: z.string(), }) - .and(events["new-medicaid-submission"].baseSchema); + .and(z.record(z.string(), z.any())); +// .and(events["new-medicaid-submission"].baseSchema); export const transformDeleteSchema = (offset: number) => deleteAdminChangeSchema.transform((data) => ({ From 33e6045ba4db784919bad5e99a5e0738711468f2 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 11:58:53 -0800 Subject: [PATCH 66/87] was it this line --- lib/lambda/update/adminChangeSchemas.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index 85eed3d8e..1f67ab6b5 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -30,8 +30,8 @@ export const splitSPAAdminChangeSchema = z adminChangeType: z.literal("split-spa"), idToBeUpdated: z.string(), }) - .and(z.record(z.string(), z.any())); -// .and(events["new-medicaid-submission"].baseSchema); + // .and(z.record(z.string(), z.any())); + .and(events["new-medicaid-submission"].baseSchema); export const transformDeleteSchema = (offset: number) => deleteAdminChangeSchema.transform((data) => ({ From 3292ccd6a503370200b39172cd54a5bef536a6d3 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 12:04:53 -0800 Subject: [PATCH 67/87] test change --- lib/lambda/update/adminChangeSchemas.ts | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index 1f67ab6b5..94a5e6bc9 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -24,14 +24,19 @@ export const updateIdAdminChangeSchema = z }) .and(z.record(z.string(), z.any())); -export const splitSPAAdminChangeSchema = z - .object({ - id: z.string(), - adminChangeType: z.literal("split-spa"), - idToBeUpdated: z.string(), - }) - // .and(z.record(z.string(), z.any())); - .and(events["new-medicaid-submission"].baseSchema); +// export const splitSPAAdminChangeSchema = z +// .object({ +// id: z.string(), +// adminChangeType: z.literal("split-spa"), +// idToBeUpdated: z.string(), +// }) +// .and(z.record(z.string(), z.any())); + +export const splitSPAAdminChangeSchema = events["new-medicaid-submission"].baseSchema.extend({ + id: z.string(), + adminChangeType: z.literal("split-spa"), + idToBeUpdated: z.string(), +}); export const transformDeleteSchema = (offset: number) => deleteAdminChangeSchema.transform((data) => ({ From 516f3d768b1def2a5eecc005507f0df5e0c59e2d Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 12:15:17 -0800 Subject: [PATCH 68/87] revert --- lib/lambda/update/adminChangeSchemas.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index 94a5e6bc9..180d3a850 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -24,19 +24,19 @@ export const updateIdAdminChangeSchema = z }) .and(z.record(z.string(), z.any())); -// export const splitSPAAdminChangeSchema = z -// .object({ -// id: z.string(), -// adminChangeType: z.literal("split-spa"), -// idToBeUpdated: z.string(), -// }) -// .and(z.record(z.string(), z.any())); +export const splitSPAAdminChangeSchema = z + .object({ + id: z.string(), + adminChangeType: z.literal("split-spa"), + idToBeUpdated: z.string(), + }) + .and(z.record(z.string(), z.any())); -export const splitSPAAdminChangeSchema = events["new-medicaid-submission"].baseSchema.extend({ - id: z.string(), - adminChangeType: z.literal("split-spa"), - idToBeUpdated: z.string(), -}); +// export const splitSPAAdminChangeSchema = events["new-medicaid-submission"].baseSchema.extend({ +// id: z.string(), +// adminChangeType: z.literal("split-spa"), +// idToBeUpdated: z.string(), +// }); export const transformDeleteSchema = (offset: number) => deleteAdminChangeSchema.transform((data) => ({ From dc61b29012d17fe81a99658dbddfe8d14f0c14b8 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 12:23:23 -0800 Subject: [PATCH 69/87] log not incrementing --- lib/lambda/submit/getNextSplitSPAId.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index b0b4b3c90..dbdd2a7a2 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -21,6 +21,7 @@ export const getNextSplitSPAId = async (spaId: string) => { const suffix = hit._source.id.toString().split("-").at(-1) ?? "@"; return Math.max(maxCharCode, suffix.charCodeAt(0)); }, "@".charCodeAt(0)); + console.log(latestSuffixCharCode, "WHAT is the latest"); // Increment letter but not past "Z" // "A-Z" is 65-90 in ASCII @@ -28,6 +29,7 @@ export const getNextSplitSPAId = async (spaId: string) => { throw new Error("This package can't be further split."); } const nextSuffix = String.fromCharCode(latestSuffixCharCode + 1); + console.log(nextSuffix, "NEXT SUFFIX???"); return `${spaId}-${nextSuffix}`; }; From 061c83ab7059146f90e2e07d0b1ef6b6e60bd7ae Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 12:28:06 -0800 Subject: [PATCH 70/87] log fix --- lib/lambda/submit/getNextSplitSPAId.ts | 1 + lib/lambda/update/adminChangeSchemas.ts | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index dbdd2a7a2..370653e7c 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -29,6 +29,7 @@ export const getNextSplitSPAId = async (spaId: string) => { throw new Error("This package can't be further split."); } const nextSuffix = String.fromCharCode(latestSuffixCharCode + 1); + console.log(latestSuffixCharCode + 1, "WHAT DOES THIS ADD TO"); console.log(nextSuffix, "NEXT SUFFIX???"); return `${spaId}-${nextSuffix}`; diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index 180d3a850..17bd9ca90 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -1,5 +1,4 @@ import { z } from "zod"; -import { events } from "lib/packages/shared-types"; export const deleteAdminChangeSchema = z .object({ @@ -32,12 +31,6 @@ export const splitSPAAdminChangeSchema = z }) .and(z.record(z.string(), z.any())); -// export const splitSPAAdminChangeSchema = events["new-medicaid-submission"].baseSchema.extend({ -// id: z.string(), -// adminChangeType: z.literal("split-spa"), -// idToBeUpdated: z.string(), -// }); - export const transformDeleteSchema = (offset: number) => deleteAdminChangeSchema.transform((data) => ({ ...data, From 3547acaa294af1cc38847b7ad2d390f0504f0f80 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 12:42:46 -0800 Subject: [PATCH 71/87] log hits --- lib/lambda/submit/getNextSplitSPAId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index 370653e7c..b1b6568ac 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -13,7 +13,7 @@ export const getNextSplitSPAId = async (spaId: string) => { }; // Get existing split SPAs for this package id const { hits } = await search(domain, index, query); - + console.log(hits.hits, "WHAT IS HITS"); // Extract suffixes from existing split SPA IDs // If there are no split SPAs yet, start at the ASCII character before "A" ("@") // Convert to ASCII char codes to get latest suffix From 60336284d0af7179d0734d101842f50cbad17f13 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 13:02:29 -0800 Subject: [PATCH 72/87] m not showing in hits --- lib/lambda/submit/getNextSplitSPAId.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index b1b6568ac..895440e6f 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -11,8 +11,17 @@ export const getNextSplitSPAId = async (spaId: string) => { }, }, }; + const testQuery = { + query: { + regexp: { + "id.keyword": `${spaId}`, + }, + }, + }; + const testHits = await search(domain, index, testQuery); // Get existing split SPAs for this package id const { hits } = await search(domain, index, query); + console.log(testHits.hits.hits, "TEST HITS???"); console.log(hits.hits, "WHAT IS HITS"); // Extract suffixes from existing split SPA IDs // If there are no split SPAs yet, start at the ASCII character before "A" ("@") From 1987dfc0d5c60160824f480574d390774cd64028 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 13:19:45 -0800 Subject: [PATCH 73/87] look for m --- lib/lambda/submit/getNextSplitSPAId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index 895440e6f..e3c48df28 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -14,7 +14,7 @@ export const getNextSplitSPAId = async (spaId: string) => { const testQuery = { query: { regexp: { - "id.keyword": `${spaId}`, + "id.keyword": `${spaId}-M`, }, }, }; From 8ca08d25bbf72f8576db34b64f34ee8f28bce2a7 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 13:28:48 -0800 Subject: [PATCH 74/87] query size? --- lib/lambda/submit/getNextSplitSPAId.ts | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index e3c48df28..5d9dab5ea 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -6,22 +6,14 @@ export const getNextSplitSPAId = async (spaId: string) => { const { domain, index } = getDomainAndNamespace("main"); const query = { query: { + size: 200, regexp: { "id.keyword": `${spaId}-[A-Z]`, }, }, }; - const testQuery = { - query: { - regexp: { - "id.keyword": `${spaId}-M`, - }, - }, - }; - const testHits = await search(domain, index, testQuery); // Get existing split SPAs for this package id const { hits } = await search(domain, index, query); - console.log(testHits.hits.hits, "TEST HITS???"); console.log(hits.hits, "WHAT IS HITS"); // Extract suffixes from existing split SPA IDs // If there are no split SPAs yet, start at the ASCII character before "A" ("@") From 6b6fce04359908599488c822e9253ca436510102 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 13:34:18 -0800 Subject: [PATCH 75/87] syntax fix --- lib/lambda/submit/getNextSplitSPAId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index 5d9dab5ea..c995776f0 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -5,8 +5,8 @@ import { cpocs } from "lib/packages/shared-types/opensearch"; export const getNextSplitSPAId = async (spaId: string) => { const { domain, index } = getDomainAndNamespace("main"); const query = { + size: 200, query: { - size: 200, regexp: { "id.keyword": `${spaId}-[A-Z]`, }, From 793068d7ca2f5cf8368d1422ca60a8fef7ce206e Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 13:43:24 -0800 Subject: [PATCH 76/87] rm logs and test admin schema change again --- lib/lambda/submit/getNextSplitSPAId.ts | 4 ---- lib/lambda/update/adminChangeSchemas.ts | 20 +++++++++++++------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index c995776f0..fdb94e1c2 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -14,7 +14,6 @@ export const getNextSplitSPAId = async (spaId: string) => { }; // Get existing split SPAs for this package id const { hits } = await search(domain, index, query); - console.log(hits.hits, "WHAT IS HITS"); // Extract suffixes from existing split SPA IDs // If there are no split SPAs yet, start at the ASCII character before "A" ("@") // Convert to ASCII char codes to get latest suffix @@ -22,7 +21,6 @@ export const getNextSplitSPAId = async (spaId: string) => { const suffix = hit._source.id.toString().split("-").at(-1) ?? "@"; return Math.max(maxCharCode, suffix.charCodeAt(0)); }, "@".charCodeAt(0)); - console.log(latestSuffixCharCode, "WHAT is the latest"); // Increment letter but not past "Z" // "A-Z" is 65-90 in ASCII @@ -30,8 +28,6 @@ export const getNextSplitSPAId = async (spaId: string) => { throw new Error("This package can't be further split."); } const nextSuffix = String.fromCharCode(latestSuffixCharCode + 1); - console.log(latestSuffixCharCode + 1, "WHAT DOES THIS ADD TO"); - console.log(nextSuffix, "NEXT SUFFIX???"); return `${spaId}-${nextSuffix}`; }; diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index 17bd9ca90..d3bc0724b 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -1,4 +1,5 @@ import { z } from "zod"; +import { events } from "lib/packages/shared-types"; export const deleteAdminChangeSchema = z .object({ @@ -23,13 +24,18 @@ export const updateIdAdminChangeSchema = z }) .and(z.record(z.string(), z.any())); -export const splitSPAAdminChangeSchema = z - .object({ - id: z.string(), - adminChangeType: z.literal("split-spa"), - idToBeUpdated: z.string(), - }) - .and(z.record(z.string(), z.any())); +// export const splitSPAAdminChangeSchema = z +// .object({ +// id: z.string(), +// adminChangeType: z.literal("split-spa"), +// idToBeUpdated: z.string(), +// }) +// .and(z.record(z.string(), z.any())); + +export const splitSPAAdminChangeSchema = events["new-medicaid-submission"].baseSchema.extend({ + adminChangeType: z.literal("split-spa"), + idToBeUpdated: z.string(), +}); export const transformDeleteSchema = (offset: number) => deleteAdminChangeSchema.transform((data) => ({ From 629cb7e3e32e54693cd822fa691e4ea9fd235325 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 13:57:27 -0800 Subject: [PATCH 77/87] revert --- lib/lambda/update/adminChangeSchemas.ts | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index d3bc0724b..6a049b950 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -24,18 +24,18 @@ export const updateIdAdminChangeSchema = z }) .and(z.record(z.string(), z.any())); -// export const splitSPAAdminChangeSchema = z -// .object({ -// id: z.string(), -// adminChangeType: z.literal("split-spa"), -// idToBeUpdated: z.string(), -// }) -// .and(z.record(z.string(), z.any())); +export const splitSPAAdminChangeSchema = z + .object({ + id: z.string(), + adminChangeType: z.literal("split-spa"), + idToBeUpdated: z.string(), + }) + .and(z.record(z.string(), z.any())); -export const splitSPAAdminChangeSchema = events["new-medicaid-submission"].baseSchema.extend({ - adminChangeType: z.literal("split-spa"), - idToBeUpdated: z.string(), -}); +// export const splitSPAAdminChangeSchema = events["new-medicaid-submission"].baseSchema.extend({ +// adminChangeType: z.literal("split-spa"), +// idToBeUpdated: z.string(), +// }); export const transformDeleteSchema = (offset: number) => deleteAdminChangeSchema.transform((data) => ({ From 6f1b0b3674baf18c05a80b1ecbdc645663a3e464 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 13:58:40 -0800 Subject: [PATCH 78/87] import error --- lib/lambda/update/adminChangeSchemas.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index 6a049b950..699198382 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { events } from "lib/packages/shared-types"; +import { events } from "/shared-types"; export const deleteAdminChangeSchema = z .object({ @@ -24,18 +24,18 @@ export const updateIdAdminChangeSchema = z }) .and(z.record(z.string(), z.any())); -export const splitSPAAdminChangeSchema = z - .object({ - id: z.string(), - adminChangeType: z.literal("split-spa"), - idToBeUpdated: z.string(), - }) - .and(z.record(z.string(), z.any())); +// export const splitSPAAdminChangeSchema = z +// .object({ +// id: z.string(), +// adminChangeType: z.literal("split-spa"), +// idToBeUpdated: z.string(), +// }) +// .and(z.record(z.string(), z.any())); -// export const splitSPAAdminChangeSchema = events["new-medicaid-submission"].baseSchema.extend({ -// adminChangeType: z.literal("split-spa"), -// idToBeUpdated: z.string(), -// }); +export const splitSPAAdminChangeSchema = events["new-medicaid-submission"].baseSchema.extend({ + adminChangeType: z.literal("split-spa"), + idToBeUpdated: z.string(), +}); export const transformDeleteSchema = (offset: number) => deleteAdminChangeSchema.transform((data) => ({ From 8407bc67e451cabb24161c15ac0dfeeaa99336bb Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 14:08:00 -0800 Subject: [PATCH 79/87] import again --- lib/lambda/update/adminChangeSchemas.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index 699198382..18f087536 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { events } from "/shared-types"; +import { events } from "shared-types/events"; export const deleteAdminChangeSchema = z .object({ From 75e80e15169fd6dee80ba49ebcbb229cae42c242 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 14:13:30 -0800 Subject: [PATCH 80/87] revert --- lib/lambda/update/adminChangeSchemas.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index 18f087536..2c9562973 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { events } from "shared-types/events"; +// import { events } from "shared-types/events"; export const deleteAdminChangeSchema = z .object({ @@ -24,18 +24,18 @@ export const updateIdAdminChangeSchema = z }) .and(z.record(z.string(), z.any())); -// export const splitSPAAdminChangeSchema = z -// .object({ -// id: z.string(), -// adminChangeType: z.literal("split-spa"), -// idToBeUpdated: z.string(), -// }) -// .and(z.record(z.string(), z.any())); +export const splitSPAAdminChangeSchema = z + .object({ + id: z.string(), + adminChangeType: z.literal("split-spa"), + idToBeUpdated: z.string(), + }) + .and(z.record(z.string(), z.any())); -export const splitSPAAdminChangeSchema = events["new-medicaid-submission"].baseSchema.extend({ - adminChangeType: z.literal("split-spa"), - idToBeUpdated: z.string(), -}); +// export const splitSPAAdminChangeSchema = events["new-medicaid-submission"].baseSchema.extend({ +// adminChangeType: z.literal("split-spa"), +// idToBeUpdated: z.string(), +// }); export const transformDeleteSchema = (offset: number) => deleteAdminChangeSchema.transform((data) => ({ From 04f9c20e366973563f22f370abb942b1e5291d27 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Mon, 27 Jan 2025 14:23:02 -0800 Subject: [PATCH 81/87] remove --- lib/lambda/update/adminChangeSchemas.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lib/lambda/update/adminChangeSchemas.ts b/lib/lambda/update/adminChangeSchemas.ts index 2c9562973..17bd9ca90 100644 --- a/lib/lambda/update/adminChangeSchemas.ts +++ b/lib/lambda/update/adminChangeSchemas.ts @@ -1,5 +1,4 @@ import { z } from "zod"; -// import { events } from "shared-types/events"; export const deleteAdminChangeSchema = z .object({ @@ -32,11 +31,6 @@ export const splitSPAAdminChangeSchema = z }) .and(z.record(z.string(), z.any())); -// export const splitSPAAdminChangeSchema = events["new-medicaid-submission"].baseSchema.extend({ -// adminChangeType: z.literal("split-spa"), -// idToBeUpdated: z.string(), -// }); - export const transformDeleteSchema = (offset: number) => deleteAdminChangeSchema.transform((data) => ({ ...data, From 48b4822dbc5d3eb9f8c8275e83d482693ccdbd78 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 28 Jan 2025 11:23:49 -0800 Subject: [PATCH 82/87] topic name not defined --- lib/lambda/submit/submitSplitSPA.test.ts | 62 +++++++++++++++++++++--- 1 file changed, 54 insertions(+), 8 deletions(-) diff --git a/lib/lambda/submit/submitSplitSPA.test.ts b/lib/lambda/submit/submitSplitSPA.test.ts index d2baad581..0fffb4647 100644 --- a/lib/lambda/submit/submitSplitSPA.test.ts +++ b/lib/lambda/submit/submitSplitSPA.test.ts @@ -1,7 +1,15 @@ import { describe, it, expect, vi, beforeEach } from "vitest"; import { handler } from "./submitSplitSPA"; import { APIGatewayEvent } from "node_modules/shared-types"; -import { TEST_CHIP_SPA_ITEM } from "mocks"; +import { TEST_CHIP_SPA_ITEM, TEST_MED_SPA_ITEM } from "mocks"; + +vi.mock("libs/handler-lib", () => ({ + response: vi.fn((data) => data), +})); + +vi.mock("./getNextSplitSPAId", () => ({ + getNextSplitSPAId: vi.fn(), +})); describe("handler", () => { beforeEach(() => { @@ -15,11 +23,13 @@ describe("handler", () => { expect(result?.statusCode).toEqual(400); }); - it("should return 400 if package ID is not provided", async () => { - const emptyBody = { body: { packageId: undefined } } as unknown as APIGatewayEvent; - const result = await handler(emptyBody); - expect(result?.statusCode).toEqual(400); - }); + // it("should return 400 if package ID is not provided", async () => { + // const emptyBody = { + // body: JSON.stringify({ packageId: undefined }), + // } as APIGatewayEvent; + // const result = await handler(emptyBody); + // expect(result?.statusCode).toEqual(400); + // }); it("should return 404 if package ID is not found", async () => { const invalidPackage = { @@ -27,7 +37,6 @@ describe("handler", () => { } as unknown as APIGatewayEvent; const result = await handler(invalidPackage); expect(result?.statusCode).toEqual(404); - expect(result?.body).toEqual('{"message":"No record found for the given id"}'); }); it("should throw an error if not Medicaid SPA", async () => { @@ -35,6 +44,43 @@ describe("handler", () => { body: { packageId: TEST_CHIP_SPA_ITEM._id }, } as unknown as APIGatewayEvent; const result = await handler(chipSPAPackage); - expect(result?.body).toEqual('{"message":"Record must be a Medicaid SPA"}'); + const expectedResult = { + statusCode: 400, + body: { message: "Record must be a Medicaid SPA" }, + }; + expect(result).toEqual(expectedResult); }); + + it("should return 400 if package ID not provided", async () => { + const invalidPackage = { + body: JSON.stringify({}), + } as unknown as APIGatewayEvent; + const result = await handler(invalidPackage); + expect(result?.statusCode).toEqual(400); + }); + + it("should fail to split a package with no topic name", async () => { + process.env.topicName = ""; + const noActionevent = { + body: { + packageId: TEST_MED_SPA_ITEM._id, + }, + } as unknown as APIGatewayEvent; + + const result = await handler(noActionevent); + const expectedResult = { + statusCode: 500, + body: { message: "Topic name is not defined" }, + }; + expect(result).toStrictEqual(expectedResult); + }); + + // it("should create a split SPA", async () => { + // const medSPAPackage = { + // body: { packageId: TEST_MED_SPA_ITEM._id }, + // } as unknown as APIGatewayEvent; + // console.log(medSPAPackage, "HELLO??"); + // const result = await handler(medSPAPackage); + // expect(result?.body).toEqual('{"message":"Record must be a Medicaid SPA"}'); + // }); }); From 933dbb651da6eaca549df1de4b183fd49d2748ec Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 28 Jan 2025 11:56:05 -0800 Subject: [PATCH 83/87] rm unnecessary packageId check and wip tests --- lib/lambda/submit/submitSplitSPA.test.ts | 14 +++++++------- lib/lambda/submit/submitSplitSPA.ts | 7 ------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/lib/lambda/submit/submitSplitSPA.test.ts b/lib/lambda/submit/submitSplitSPA.test.ts index 0fffb4647..9cf1c8519 100644 --- a/lib/lambda/submit/submitSplitSPA.test.ts +++ b/lib/lambda/submit/submitSplitSPA.test.ts @@ -7,9 +7,9 @@ vi.mock("libs/handler-lib", () => ({ response: vi.fn((data) => data), })); -vi.mock("./getNextSplitSPAId", () => ({ - getNextSplitSPAId: vi.fn(), -})); +// vi.mock("./getNextSplitSPAId", () => ({ +// getNextSplitSPAId: vi.fn(), +// })); describe("handler", () => { beforeEach(() => { @@ -33,7 +33,7 @@ describe("handler", () => { it("should return 404 if package ID is not found", async () => { const invalidPackage = { - body: { packageId: "MD-25-9999" }, + body: JSON.stringify({ packageId: "MD-25-9999" }), } as unknown as APIGatewayEvent; const result = await handler(invalidPackage); expect(result?.statusCode).toEqual(404); @@ -62,10 +62,10 @@ describe("handler", () => { it("should fail to split a package with no topic name", async () => { process.env.topicName = ""; const noActionevent = { - body: { + body: JSON.stringify({ packageId: TEST_MED_SPA_ITEM._id, - }, - } as unknown as APIGatewayEvent; + }), + } as APIGatewayEvent; const result = await handler(noActionevent); const expectedResult = { diff --git a/lib/lambda/submit/submitSplitSPA.ts b/lib/lambda/submit/submitSplitSPA.ts index 2d4a9e752..857892471 100644 --- a/lib/lambda/submit/submitSplitSPA.ts +++ b/lib/lambda/submit/submitSplitSPA.ts @@ -63,13 +63,6 @@ export const handler = async (event: APIGatewayEvent) => { const body = typeof event.body === "string" ? JSON.parse(event.body) : event.body; const { packageId } = splitSPAEventBodySchema.parse(body); - if (!packageId) { - return response({ - statusCode: 400, - body: { message: "Package ID to split is required" }, - }); - } - const currentPackage = await getPackage(packageId); if (!currentPackage || currentPackage.found == false) { return response({ From 67541100fb3ba9e88d1637f4dbc508e1e704fc1a Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 28 Jan 2025 13:51:36 -0800 Subject: [PATCH 84/87] reduce query size --- lib/lambda/submit/getNextSplitSPAId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index fdb94e1c2..4d72e6ade 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -5,7 +5,7 @@ import { cpocs } from "lib/packages/shared-types/opensearch"; export const getNextSplitSPAId = async (spaId: string) => { const { domain, index } = getDomainAndNamespace("main"); const query = { - size: 200, + size: 50, query: { regexp: { "id.keyword": `${spaId}-[A-Z]`, From 65933575888cf06e7b07d95a07bb5f269263ef7d Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 28 Jan 2025 14:13:14 -0800 Subject: [PATCH 85/87] reduce query size? --- lib/lambda/submit/getNextSplitSPAId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index 4d72e6ade..282ff1109 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -5,7 +5,7 @@ import { cpocs } from "lib/packages/shared-types/opensearch"; export const getNextSplitSPAId = async (spaId: string) => { const { domain, index } = getDomainAndNamespace("main"); const query = { - size: 50, + size: 35, query: { regexp: { "id.keyword": `${spaId}-[A-Z]`, From 576e2285099c655c59c4bc58e87e621c4b25d170 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 28 Jan 2025 14:21:02 -0800 Subject: [PATCH 86/87] change order of pushing? --- lib/lambda/sinkChangelog.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/lambda/sinkChangelog.ts b/lib/lambda/sinkChangelog.ts index e421aa9a6..91fea6112 100644 --- a/lib/lambda/sinkChangelog.ts +++ b/lib/lambda/sinkChangelog.ts @@ -96,8 +96,6 @@ const processAndIndex = async ({ }); }); } else if (result.data.adminChangeType === "split-spa") { - // Push doc with new split package - docs.push(result.data); // Get all changelog entries for this ID and create copies of all entries with new ID const packageChangelogs = await getPackageChangelog(result.data.idToBeUpdated); @@ -109,6 +107,8 @@ const processAndIndex = async ({ packageId: result.data.id, }); }); + // Push doc with new split package + docs.push(result.data); } else { docs.push(result.data); } From 98f710d04491b817d39a422a6032450b482428c4 Mon Sep 17 00:00:00 2001 From: tiffanyvu Date: Tue, 28 Jan 2025 14:27:17 -0800 Subject: [PATCH 87/87] remove query size --- lib/lambda/sinkChangelog.ts | 5 +++-- lib/lambda/submit/getNextSplitSPAId.ts | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/lambda/sinkChangelog.ts b/lib/lambda/sinkChangelog.ts index 91fea6112..bdceaa5aa 100644 --- a/lib/lambda/sinkChangelog.ts +++ b/lib/lambda/sinkChangelog.ts @@ -96,6 +96,9 @@ const processAndIndex = async ({ }); }); } else if (result.data.adminChangeType === "split-spa") { + // Push doc with new split package + docs.push(result.data); + // Get all changelog entries for this ID and create copies of all entries with new ID const packageChangelogs = await getPackageChangelog(result.data.idToBeUpdated); @@ -107,8 +110,6 @@ const processAndIndex = async ({ packageId: result.data.id, }); }); - // Push doc with new split package - docs.push(result.data); } else { docs.push(result.data); } diff --git a/lib/lambda/submit/getNextSplitSPAId.ts b/lib/lambda/submit/getNextSplitSPAId.ts index 282ff1109..256fee493 100644 --- a/lib/lambda/submit/getNextSplitSPAId.ts +++ b/lib/lambda/submit/getNextSplitSPAId.ts @@ -5,7 +5,6 @@ import { cpocs } from "lib/packages/shared-types/opensearch"; export const getNextSplitSPAId = async (spaId: string) => { const { domain, index } = getDomainAndNamespace("main"); const query = { - size: 35, query: { regexp: { "id.keyword": `${spaId}-[A-Z]`,