Skip to content

Commit

Permalink
Merge pull request #932 from Accenture/bugfix/889-if-keywords-exist-m…
Browse files Browse the repository at this point in the history
…ultiple-times-due-to-multiples-codes-not-all-are-saved

Bugfix/889 if keywords exist multiple times due to multiples codes not all are saved
  • Loading branch information
JoernBerkefeld authored May 30, 2023
2 parents 5e83b42 + de952f1 commit af86916
Show file tree
Hide file tree
Showing 37 changed files with 400 additions and 151 deletions.
53 changes: 42 additions & 11 deletions docs/dist/documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -4006,11 +4006,13 @@ MobileKeyword MetadataType

* [MobileKeyword](#MobileKeyword)[<code>MetadataType</code>](#MetadataType)
* [.retrieve(retrieveDir, [_], [__], [key])](#MobileKeyword.retrieve) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code> \| <code>void</code>
* [.parseResponseBody(body, [singleRetrieve])](#MobileKeyword.parseResponseBody) ⇒ <code>TYPE.MetadataTypeMap</code>
* [.createOrUpdate(metadataMap, metadataKey, hasError, metadataToUpdate, metadataToCreate)](#MobileKeyword.createOrUpdate) ⇒ <code>&#x27;create&#x27;</code> \| <code>&#x27;update&#x27;</code> \| <code>&#x27;skip&#x27;</code>
* [.retrieveForCache(_, __, [key])](#MobileKeyword.retrieveForCache) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#MobileKeyword.retrieveAsTemplate) ⇒ <code>Promise.&lt;TYPE.MetadataTypeItemObj&gt;</code>
* [.create(MobileKeyword)](#MobileKeyword.create) ⇒ <code>Promise</code>
* [.retrieveAsTemplate(templateDir, key, templateVariables)](#MobileKeyword.retrieveAsTemplate) ⇒ <code>Promise.&lt;TYPE.MetadataTypeItemObj&gt;</code>
* [.create(metadata)](#MobileKeyword.create) ⇒ <code>Promise</code>
* [.update(metadata)](#MobileKeyword.update) ⇒ <code>Promise</code>
* [.postRetrieveTasks(metadata)](#MobileKeyword.postRetrieveTasks) ⇒ <code>TYPE.CodeExtractItem</code> \| <code>TYPE.MetadataTypeItem</code>
* [.postRetrieveTasks(metadata)](#MobileKeyword.postRetrieveTasks) ⇒ <code>TYPE.CodeExtractItem</code> \| <code>TYPE.MetadataTypeItem</code> \| <code>void</code>
* [.prepExtractedCode(metadataScript)](#MobileKeyword.prepExtractedCode) ⇒ <code>Object</code>
* [.buildDefinitionForNested(templateDir, targetDir, metadata, templateVariables, templateName)](#MobileKeyword.buildDefinitionForNested) ⇒ <code>Promise.&lt;Array.&lt;Array.&lt;string&gt;&gt;&gt;</code>
* [.buildTemplateForNested(templateDir, targetDir, metadata, templateVariables, templateName)](#MobileKeyword.buildTemplateForNested) ⇒ <code>Promise.&lt;Array.&lt;Array.&lt;string&gt;&gt;&gt;</code>
Expand Down Expand Up @@ -4039,6 +4041,35 @@ Endpoint /legacy/v1/beta/mobile/keyword/ return all Mobile Keywords with all det
| [__] | <code>void</code> | unused parameter |
| [key] | <code>string</code> | customer key of single item to retrieve |

<a name="MobileKeyword.parseResponseBody"></a>

### MobileKeyword.parseResponseBody(body, [singleRetrieve]) ⇒ <code>TYPE.MetadataTypeMap</code>
Builds map of metadata entries mapped to their keyfields

**Kind**: static method of [<code>MobileKeyword</code>](#MobileKeyword)
**Returns**: <code>TYPE.MetadataTypeMap</code> - keyField => metadata map

| Param | Type | Description |
| --- | --- | --- |
| body | <code>object</code> | json of response body |
| [singleRetrieve] | <code>string</code> \| <code>number</code> | key of single item to filter by |

<a name="MobileKeyword.createOrUpdate"></a>

### MobileKeyword.createOrUpdate(metadataMap, metadataKey, hasError, metadataToUpdate, metadataToCreate) ⇒ <code>&#x27;create&#x27;</code> \| <code>&#x27;update&#x27;</code> \| <code>&#x27;skip&#x27;</code>
helper for [upsert](#MetadataType.upsert)

**Kind**: static method of [<code>MobileKeyword</code>](#MobileKeyword)
**Returns**: <code>&#x27;create&#x27;</code> \| <code>&#x27;update&#x27;</code> \| <code>&#x27;skip&#x27;</code> - action to take

| Param | Type | Description |
| --- | --- | --- |
| metadataMap | <code>TYPE.MetadataTypeMap</code> | list of metadata |
| metadataKey | <code>string</code> | key of item we are looking at |
| hasError | <code>boolean</code> | error flag from previous code |
| metadataToUpdate | <code>Array.&lt;TYPE.MetadataTypeItemDiff&gt;</code> | list of items to update |
| metadataToCreate | <code>Array.&lt;TYPE.MetadataTypeItem&gt;</code> | list of items to create |

<a name="MobileKeyword.retrieveForCache"></a>

### MobileKeyword.retrieveForCache(_, __, [key]) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
Expand All @@ -4055,29 +4086,29 @@ Retrieves event definition metadata for caching

<a name="MobileKeyword.retrieveAsTemplate"></a>

### MobileKeyword.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ <code>Promise.&lt;TYPE.MetadataTypeItemObj&gt;</code>
Retrieve a specific keyword
### MobileKeyword.retrieveAsTemplate(templateDir, key, templateVariables) ⇒ <code>Promise.&lt;TYPE.MetadataTypeItemObj&gt;</code>
retrieve an item and create a template from it

**Kind**: static method of [<code>MobileKeyword</code>](#MobileKeyword)
**Returns**: <code>Promise.&lt;TYPE.MetadataTypeItemObj&gt;</code> - Promise of metadata

| Param | Type | Description |
| --- | --- | --- |
| templateDir | <code>string</code> | Directory where retrieved metadata directory will be saved |
| name | <code>string</code> | name of the metadata file |
| key | <code>string</code> | name of the metadata file |
| templateVariables | <code>TYPE.TemplateMap</code> | variables to be replaced in the metadata |

<a name="MobileKeyword.create"></a>

### MobileKeyword.create(MobileKeyword) ⇒ <code>Promise</code>
Creates a single Event Definition
### MobileKeyword.create(metadata) ⇒ <code>Promise</code>
Creates a single item

**Kind**: static method of [<code>MobileKeyword</code>](#MobileKeyword)
**Returns**: <code>Promise</code> - Promise

| Param | Type | Description |
| --- | --- | --- |
| MobileKeyword | <code>TYPE.MetadataTypeItem</code> | a single Event Definition |
| metadata | <code>TYPE.MetadataTypeItem</code> | a single item |

<a name="MobileKeyword.update"></a>

Expand All @@ -4093,11 +4124,11 @@ Updates a single item

<a name="MobileKeyword.postRetrieveTasks"></a>

### MobileKeyword.postRetrieveTasks(metadata) ⇒ <code>TYPE.CodeExtractItem</code> \| <code>TYPE.MetadataTypeItem</code>
### MobileKeyword.postRetrieveTasks(metadata) ⇒ <code>TYPE.CodeExtractItem</code> \| <code>TYPE.MetadataTypeItem</code> \| <code>void</code>
manages post retrieve steps

**Kind**: static method of [<code>MobileKeyword</code>](#MobileKeyword)
**Returns**: <code>TYPE.CodeExtractItem</code> \| <code>TYPE.MetadataTypeItem</code> - Array with one metadata object and one ssjs string
**Returns**: <code>TYPE.CodeExtractItem</code> \| <code>TYPE.MetadataTypeItem</code> \| <code>void</code> - Array with one metadata object and one ssjs string; or single metadata object; nothing if filtered

| Param | Type | Description |
| --- | --- | --- |
Expand Down
21 changes: 11 additions & 10 deletions lib/metadataTypes/Journey.js
Original file line number Diff line number Diff line change
Expand Up @@ -542,12 +542,13 @@ class Journey extends MetadataType {
try {
// mobileKeyword
if (activity.configurationArguments?.keywordId) {
activity.configurationArguments.c__mobileKeyword = cache.searchForField(
'mobileKeyword',
activity.configurationArguments.keywordId,
'id',
'keyword'
);
activity.configurationArguments.r__mobileKeyword_codeKeyword =
cache.searchForField(
'mobileKeyword',
activity.configurationArguments.keywordId,
'id',
'c__codeKeyword'
);
delete activity.configurationArguments.keywordId;
}
} catch (ex) {
Expand Down Expand Up @@ -833,14 +834,14 @@ class Journey extends MetadataType {
delete activity.configurationArguments.c__mobileMessage_id;
}
// mobileKeyword
if (activity.configurationArguments?.c__mobileKeyword) {
if (activity.configurationArguments?.r__mobileKeyword_codeKeyword) {
activity.configurationArguments.keywordId = cache.searchForField(
'mobileKeyword',
activity.c__mobileKeyword,
'keyword',
activity.r__mobileKeyword_codeKeyword,
'c__codeKeyword',
'id'
);
delete activity.configurationArguments.c__mobileKeyword;
delete activity.configurationArguments.r__mobileKeyword_codeKeyword;
}
if (activity.configurationArguments?.c__next_mobileKeyword) {
activity.configurationArguments.nextKeywordId = cache.searchForField(
Expand Down
5 changes: 4 additions & 1 deletion lib/metadataTypes/MetadataType.js
Original file line number Diff line number Diff line change
Expand Up @@ -1528,7 +1528,10 @@ class MetadataType {
// so its in retrieve but not in save. Here we put into the clone so that the original
// object used for caching doesnt have the Id removed.
const saveClone = JSON.parse(JSON.stringify(results[originalKey]));
if (!this.definition.keepId) {
if (
!this.definition.keepId &&
this.definition.idField !== this.definition.keyField
) {
delete saveClone[this.definition.idField];
}

Expand Down
Loading

0 comments on commit af86916

Please sign in to comment.