Skip to content

Commit

Permalink
#987: handle complex field paths in objects and arrays for --like
Browse files Browse the repository at this point in the history
  • Loading branch information
JoernBerkefeld committed Jun 27, 2023
1 parent c8c4050 commit 9e2f013
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 11 deletions.
10 changes: 6 additions & 4 deletions docs/dist/documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -5881,7 +5881,7 @@ CLI entry for SFMC DevTools
* [.sleep(ms)](#Util.sleep) ⇒ <code>Promise.&lt;void&gt;</code>
* [.getSsjs(code)](#Util.getSsjs) ⇒ <code>string</code>
* [.stringLike(testString, search)](#Util.stringLike) ⇒ <code>boolean</code>
* [.fieldsLike(metadata)](#Util.fieldsLike) ⇒ <code>boolean</code>
* [.fieldsLike(metadata, [filters])](#Util.fieldsLike) ⇒ <code>boolean</code>

<a name="Util.skipInteraction"></a>

Expand Down Expand Up @@ -6253,7 +6253,7 @@ allows us to filter just like with SQL's LIKE operator

<a name="Util.fieldsLike"></a>

### Util.fieldsLike(metadata) ⇒ <code>boolean</code>
### Util.fieldsLike(metadata, [filters]) ⇒ <code>boolean</code>
returns true if no LIKE filter is defined or if all filters match

**Kind**: static method of [<code>Util</code>](#Util)
Expand All @@ -6262,6 +6262,7 @@ returns true if no LIKE filter is defined or if all filters match
| Param | Type | Description |
| --- | --- | --- |
| metadata | <code>TYPE.MetadataTypeItem</code> | a single metadata item |
| [filters] | <code>object</code> | only used in recursive calls |

<a name="MetadataTypeDefinitions"></a>

Expand Down Expand Up @@ -7798,7 +7799,7 @@ Util that contains logger and simple util methods
* [.sleep(ms)](#Util.sleep) ⇒ <code>Promise.&lt;void&gt;</code>
* [.getSsjs(code)](#Util.getSsjs) ⇒ <code>string</code>
* [.stringLike(testString, search)](#Util.stringLike) ⇒ <code>boolean</code>
* [.fieldsLike(metadata)](#Util.fieldsLike) ⇒ <code>boolean</code>
* [.fieldsLike(metadata, [filters])](#Util.fieldsLike) ⇒ <code>boolean</code>

<a name="Util.skipInteraction"></a>

Expand Down Expand Up @@ -8170,7 +8171,7 @@ allows us to filter just like with SQL's LIKE operator

<a name="Util.fieldsLike"></a>

### Util.fieldsLike(metadata) ⇒ <code>boolean</code>
### Util.fieldsLike(metadata, [filters]) ⇒ <code>boolean</code>
returns true if no LIKE filter is defined or if all filters match

**Kind**: static method of [<code>Util</code>](#Util)
Expand All @@ -8179,6 +8180,7 @@ returns true if no LIKE filter is defined or if all filters match
| Param | Type | Description |
| --- | --- | --- |
| metadata | <code>TYPE.MetadataTypeItem</code> | a single metadata item |
| [filters] | <code>object</code> | only used in recursive calls |

<a name="csvToArray"></a>

Expand Down
20 changes: 13 additions & 7 deletions lib/util/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -805,21 +805,27 @@ const Util = {
* returns true if no LIKE filter is defined or if all filters match
*
* @param {TYPE.MetadataTypeItem} metadata a single metadata item
* @param {object} [filters] only used in recursive calls
* @returns {boolean} true if no LIKE filter is defined or if all filters match
*/
fieldsLike(metadata) {
const filters = Util.OPTIONS.like;
fieldsLike(metadata, filters) {
filters ||= Util.OPTIONS.like;
if (!filters) {
return true;
}
const fields = Object.keys(filters);
return fields.every((field) => {
const filter = filters[field];
// TODO apply recursive logic for nested objects
if (typeof filter === 'string') {
return Util.stringLike(metadata[field], filter);
} else if (Array.isArray(filter)) {
return filter.some((f) => Util.stringLike(metadata[field], f));
if (Array.isArray(metadata[field])) {
return metadata[field].some((f) => Util.fieldsLike(f, filter));
} else {
if (typeof filter === 'string') {
return Util.stringLike(metadata[field], filter);
} else if (Array.isArray(filter)) {
return filter.some((f) => Util.stringLike(metadata[field], f));
} else if (typeof filter === 'object') {
return Util.fieldsLike(metadata[field], filter);
}
}
return false;
});
Expand Down

0 comments on commit 9e2f013

Please sign in to comment.