@salesforce/plugin-data 3.1.11 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -27
- package/lib/BulkBaseCommand.js +68 -94
- package/lib/BulkBaseCommand.js.map +1 -1
- package/lib/api/data/tree/exportApi.js +0 -1
- package/lib/api/data/tree/exportApi.js.map +1 -1
- package/lib/api/data/tree/importApi.js +2 -13
- package/lib/api/data/tree/importApi.js.map +1 -1
- package/lib/api/data/tree/importPlan.js.map +1 -1
- package/lib/batcher.js +3 -26
- package/lib/batcher.js.map +1 -1
- package/lib/bulkOperationCommand.js +125 -118
- package/lib/bulkOperationCommand.js.map +1 -1
- package/lib/bulkUtils.js +13 -24
- package/lib/bulkUtils.js.map +1 -1
- package/lib/commands/data/create/record.js.map +1 -1
- package/lib/commands/data/delete/bulk.js +14 -11
- package/lib/commands/data/delete/bulk.js.map +1 -1
- package/lib/commands/data/delete/record.js.map +1 -1
- package/lib/commands/data/delete/resume.js +1 -4
- package/lib/commands/data/delete/resume.js.map +1 -1
- package/lib/commands/data/get/record.js.map +1 -1
- package/lib/commands/data/import/tree.js +1 -1
- package/lib/commands/data/import/tree.js.map +1 -1
- package/lib/commands/data/query/resume.js +21 -10
- package/lib/commands/data/query/resume.js.map +1 -1
- package/lib/commands/data/query.js +38 -12
- package/lib/commands/data/query.js.map +1 -1
- package/lib/commands/data/resume.js +9 -15
- package/lib/commands/data/resume.js.map +1 -1
- package/lib/commands/data/update/record.js.map +1 -1
- package/lib/commands/data/upsert/bulk.js +16 -13
- package/lib/commands/data/upsert/bulk.js.map +1 -1
- package/lib/commands/data/upsert/resume.js +1 -4
- package/lib/commands/data/upsert/resume.js.map +1 -1
- package/lib/commands/force/data/bulk/delete.js +5 -4
- package/lib/commands/force/data/bulk/delete.js.map +1 -1
- package/lib/commands/force/data/bulk/status.js +1 -1
- package/lib/commands/force/data/bulk/status.js.map +1 -1
- package/lib/commands/force/data/bulk/upsert.js +6 -6
- package/lib/commands/force/data/bulk/upsert.js.map +1 -1
- package/lib/dataCommand.js.map +1 -1
- package/lib/dataSoqlQueryTypes.js.map +1 -1
- package/lib/export.js +1 -1
- package/lib/export.js.map +1 -1
- package/lib/flags.js +4 -3
- package/lib/flags.js.map +1 -1
- package/lib/queryUtils.js +3 -1
- package/lib/queryUtils.js.map +1 -1
- package/lib/reporters/csvReporter.js +78 -0
- package/lib/reporters/csvReporter.js.map +1 -0
- package/lib/reporters/humanReporter.js +120 -0
- package/lib/reporters/humanReporter.js.map +1 -0
- package/lib/reporters/reporters.js +69 -0
- package/lib/reporters/reporters.js.map +1 -0
- package/lib/resumeBulkCommand.js +27 -14
- package/lib/resumeBulkCommand.js.map +1 -1
- package/messages/batcher.md +3 -3
- package/messages/bulk.base.command.md +4 -4
- package/messages/bulk.resume.command.md +0 -4
- package/messages/importApi.md +2 -2
- package/messages/reporter.md +1 -1
- package/messages/soql.query.md +0 -4
- package/npm-shrinkwrap.json +490 -954
- package/oclif.lock +1170 -1537
- package/oclif.manifest.json +8 -11
- package/package.json +6 -8
- package/lib/reporters.js +0 -335
- package/lib/reporters.js.map +0 -1
package/oclif.manifest.json
CHANGED
|
@@ -83,6 +83,9 @@
|
|
|
83
83
|
],
|
|
84
84
|
"char": "t",
|
|
85
85
|
"deprecateAliases": true,
|
|
86
|
+
"exclusive": [
|
|
87
|
+
"bulk"
|
|
88
|
+
],
|
|
86
89
|
"name": "use-tooling-api",
|
|
87
90
|
"summary": "Use Tooling API so you can run queries on Tooling API objects.",
|
|
88
91
|
"allowNo": false,
|
|
@@ -143,8 +146,8 @@
|
|
|
143
146
|
"multiple": false,
|
|
144
147
|
"options": [
|
|
145
148
|
"human",
|
|
146
|
-
"
|
|
147
|
-
"
|
|
149
|
+
"csv",
|
|
150
|
+
"json"
|
|
148
151
|
],
|
|
149
152
|
"type": "option"
|
|
150
153
|
},
|
|
@@ -793,7 +796,6 @@
|
|
|
793
796
|
"deprecateAliases": true,
|
|
794
797
|
"name": "target-org",
|
|
795
798
|
"noCacheDefault": true,
|
|
796
|
-
"summary": "Org alias or username to use for the target org.",
|
|
797
799
|
"hasDynamicHelp": true,
|
|
798
800
|
"multiple": false,
|
|
799
801
|
"type": "option"
|
|
@@ -1374,7 +1376,6 @@
|
|
|
1374
1376
|
"deprecateAliases": true,
|
|
1375
1377
|
"name": "target-org",
|
|
1376
1378
|
"noCacheDefault": true,
|
|
1377
|
-
"summary": "Org alias or username to use for the target org.",
|
|
1378
1379
|
"hasDynamicHelp": true,
|
|
1379
1380
|
"multiple": false,
|
|
1380
1381
|
"type": "option"
|
|
@@ -1413,8 +1414,8 @@
|
|
|
1413
1414
|
"multiple": false,
|
|
1414
1415
|
"options": [
|
|
1415
1416
|
"human",
|
|
1416
|
-
"
|
|
1417
|
-
"
|
|
1417
|
+
"csv",
|
|
1418
|
+
"json"
|
|
1418
1419
|
],
|
|
1419
1420
|
"type": "option"
|
|
1420
1421
|
},
|
|
@@ -1431,9 +1432,6 @@
|
|
|
1431
1432
|
"type": "option"
|
|
1432
1433
|
},
|
|
1433
1434
|
"use-most-recent": {
|
|
1434
|
-
"exclusive": [
|
|
1435
|
-
"bulk-query-id"
|
|
1436
|
-
],
|
|
1437
1435
|
"name": "use-most-recent",
|
|
1438
1436
|
"summary": "Use the most recent bulk query ID from cache.",
|
|
1439
1437
|
"allowNo": false,
|
|
@@ -1936,7 +1934,6 @@
|
|
|
1936
1934
|
"deprecateAliases": true,
|
|
1937
1935
|
"name": "target-org",
|
|
1938
1936
|
"noCacheDefault": true,
|
|
1939
|
-
"summary": "Org alias or username to use for the target org.",
|
|
1940
1937
|
"hasDynamicHelp": true,
|
|
1941
1938
|
"multiple": false,
|
|
1942
1939
|
"type": "option"
|
|
@@ -2695,5 +2692,5 @@
|
|
|
2695
2692
|
]
|
|
2696
2693
|
}
|
|
2697
2694
|
},
|
|
2698
|
-
"version": "3.
|
|
2695
|
+
"version": "3.2.0"
|
|
2699
2696
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/plugin-data",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Plugin for salesforce data commands",
|
|
5
5
|
"author": "Salesforce",
|
|
6
6
|
"homepage": "https://github.com/salesforcecli/plugin-data",
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
"version": "oclif readme"
|
|
109
109
|
},
|
|
110
110
|
"dependencies": {
|
|
111
|
+
"@jsforce/jsforce-node": "^3.0.0-next.2",
|
|
111
112
|
"@oclif/core": "^3.23.0",
|
|
112
113
|
"@salesforce/core": "^6.7.1",
|
|
113
114
|
"@salesforce/kit": "^3.0.15",
|
|
@@ -116,16 +117,13 @@
|
|
|
116
117
|
"chalk": "^5.3.0",
|
|
117
118
|
"change-case": "^5.4.3",
|
|
118
119
|
"csv-parse": "^4.16.3",
|
|
119
|
-
"csv-stringify": "^6.4.6"
|
|
120
|
-
"jsforce": "^2.0.0-beta.29"
|
|
120
|
+
"csv-stringify": "^6.4.6"
|
|
121
121
|
},
|
|
122
122
|
"devDependencies": {
|
|
123
123
|
"@oclif/plugin-command-snapshot": "^5.1.1",
|
|
124
|
-
"@salesforce/cli-plugins-testkit": "^5.1.
|
|
124
|
+
"@salesforce/cli-plugins-testkit": "^5.1.11",
|
|
125
125
|
"@salesforce/dev-scripts": "^8.4.2",
|
|
126
126
|
"@salesforce/plugin-command-reference": "^3.0.70",
|
|
127
|
-
"@types/chai-as-promised": "^7.1.8",
|
|
128
|
-
"chai-as-promised": "^7.1.1",
|
|
129
127
|
"eslint-plugin-sf-plugin": "^1.17.4",
|
|
130
128
|
"oclif": "^4.5.5",
|
|
131
129
|
"ts-node": "^10.9.2",
|
|
@@ -249,7 +247,7 @@
|
|
|
249
247
|
"exports": "./lib/index.js",
|
|
250
248
|
"type": "module",
|
|
251
249
|
"sfdx": {
|
|
252
|
-
"publicKeyUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-data/3.
|
|
253
|
-
"signatureUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-data/3.
|
|
250
|
+
"publicKeyUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-data/3.2.0.crt",
|
|
251
|
+
"signatureUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-data/3.2.0.sig"
|
|
254
252
|
}
|
|
255
253
|
}
|
package/lib/reporters.js
DELETED
|
@@ -1,335 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2020, salesforce.com, inc.
|
|
3
|
-
* All rights reserved.
|
|
4
|
-
* Licensed under the BSD 3-Clause license.
|
|
5
|
-
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
6
|
-
*/
|
|
7
|
-
import { EOL } from 'node:os';
|
|
8
|
-
import { Logger, Messages } from '@salesforce/core';
|
|
9
|
-
import { ux } from '@oclif/core';
|
|
10
|
-
import chalk from 'chalk';
|
|
11
|
-
import { get, getArray, getNumber, isString } from '@salesforce/ts-types';
|
|
12
|
-
import { capitalCase } from 'change-case';
|
|
13
|
-
import { FieldType } from './dataSoqlQueryTypes.js';
|
|
14
|
-
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
15
|
-
const messages = Messages.loadMessages('@salesforce/plugin-data', 'soql.query');
|
|
16
|
-
const reporterMessages = Messages.loadMessages('@salesforce/plugin-data', 'reporter');
|
|
17
|
-
class Reporter {
|
|
18
|
-
logger;
|
|
19
|
-
constructor() {
|
|
20
|
-
this.logger = Logger.childFromRoot('reporter');
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
class QueryReporter extends Reporter {
|
|
24
|
-
columns = [];
|
|
25
|
-
data;
|
|
26
|
-
constructor(data, columns) {
|
|
27
|
-
super();
|
|
28
|
-
this.columns = columns;
|
|
29
|
-
this.data = data;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
export class HumanReporter extends QueryReporter {
|
|
33
|
-
constructor(data, columns) {
|
|
34
|
-
super(data, columns);
|
|
35
|
-
}
|
|
36
|
-
display() {
|
|
37
|
-
const { attributeNames, children, aggregates } = this.parseFields();
|
|
38
|
-
// in case of count() there are no records, but there is a totalSize
|
|
39
|
-
const totalCount = this.data.result.records.length ? this.data.result.records.length : this.data.result.totalSize;
|
|
40
|
-
this.soqlQuery(attributeNames, this.massageRows(this.data.result.records, children, aggregates), totalCount);
|
|
41
|
-
}
|
|
42
|
-
parseFields() {
|
|
43
|
-
const fields = this.columns;
|
|
44
|
-
// Field names
|
|
45
|
-
const attributeNames = [];
|
|
46
|
-
// For subqueries. Display the children under the parents
|
|
47
|
-
const children = [];
|
|
48
|
-
// For function fields, like avg(total).
|
|
49
|
-
const aggregates = [];
|
|
50
|
-
if (fields) {
|
|
51
|
-
this.logger.info(`Found fields ${JSON.stringify(fields.map((field) => `${typeof field}.${field.name}`))}`);
|
|
52
|
-
fields.forEach((field) => {
|
|
53
|
-
if (field.fieldType === FieldType.subqueryField) {
|
|
54
|
-
children.push(field.name);
|
|
55
|
-
(field.fields ?? []).forEach((subfield) => attributeNames.push(`${field.name}.${subfield.name}`));
|
|
56
|
-
}
|
|
57
|
-
else if (field.fieldType === FieldType.functionField) {
|
|
58
|
-
if (field.alias) {
|
|
59
|
-
attributeNames.push(field.alias);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
attributeNames.push(field.name);
|
|
63
|
-
}
|
|
64
|
-
aggregates.push(field);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
attributeNames.push(field.name);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
this.logger.info(`No fields found for query "${this.data.query}"`);
|
|
73
|
-
}
|
|
74
|
-
return { attributeNames, children, aggregates };
|
|
75
|
-
}
|
|
76
|
-
soqlQuery(columns, records, totalCount) {
|
|
77
|
-
this.prepNullValues(records);
|
|
78
|
-
ux.table(records, prepColumns(columns));
|
|
79
|
-
ux.log(chalk.bold(messages.getMessage('displayQueryRecordsRetrieved', [totalCount])));
|
|
80
|
-
}
|
|
81
|
-
prepNullValues(records) {
|
|
82
|
-
records
|
|
83
|
-
.filter((record) => record)
|
|
84
|
-
.forEach((record) => {
|
|
85
|
-
if (record) {
|
|
86
|
-
const recordAsObject = record;
|
|
87
|
-
Reflect.ownKeys(recordAsObject).forEach((propertyKey) => {
|
|
88
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
89
|
-
const value = Reflect.get(recordAsObject, propertyKey);
|
|
90
|
-
if (value === null) {
|
|
91
|
-
Reflect.set(recordAsObject, propertyKey, chalk.bold('null'));
|
|
92
|
-
}
|
|
93
|
-
else if (typeof value === 'object') {
|
|
94
|
-
this.prepNullValues([value]);
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
// public massageRows(queryResults: BasicRecord[], children: string[], aggregates: Field[]): BasicRecord[] {
|
|
101
|
-
massageRows(queryResults, children, aggregates) {
|
|
102
|
-
// some fields will return a JSON object that isn't accessible via the query (SELECT Metadata FROM RemoteProxy)
|
|
103
|
-
// some will return a JSON that IS accessible via the query (SELECT owner.Profile.Name FROM Lead)
|
|
104
|
-
// querying (SELECT Metadata.isActive FROM RemoteProxy) throws a SOQL validation error, so we have to display the entire Metadata object
|
|
105
|
-
queryResults.forEach((qr) => {
|
|
106
|
-
const result = qr;
|
|
107
|
-
this.data.columns.forEach((col) => {
|
|
108
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
109
|
-
const entry = Reflect.get(result, col.name);
|
|
110
|
-
if (typeof entry === 'object' && col.fieldType === FieldType.field) {
|
|
111
|
-
Reflect.set(result, col.name, JSON.stringify(entry, null, 2));
|
|
112
|
-
}
|
|
113
|
-
else if (typeof entry === 'object' && col.fields?.length && entry) {
|
|
114
|
-
col.fields.forEach((field) => {
|
|
115
|
-
Reflect.set(result, `${col.name}.${field.name}`, get(result, `${col.name}.records[0].${field.name}`));
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
// There are subqueries or aggregates. Massage the data.
|
|
121
|
-
if (children.length > 0 || aggregates.length > 0) {
|
|
122
|
-
const qr = queryResults.reduce((newResults, result) => {
|
|
123
|
-
// Aggregates are soql functions that aggregate data, like "SELECT avg(total)" and
|
|
124
|
-
// are returned in the data as exprX. Aggregates can have aliases, like "avg(total) totalAverage"
|
|
125
|
-
// and are returned in the data as the alias.
|
|
126
|
-
if (aggregates.length > 0) {
|
|
127
|
-
for (let i = 0; i < aggregates.length; i++) {
|
|
128
|
-
const aggregate = aggregates[i];
|
|
129
|
-
if (!aggregate.alias) {
|
|
130
|
-
Reflect.set(result, aggregate.name, Reflect.get(result, `expr${i}`));
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
const subResults = [];
|
|
135
|
-
if (children.length > 0) {
|
|
136
|
-
const childrenRows = {};
|
|
137
|
-
children.forEach((child) => {
|
|
138
|
-
const aChild = get(result, child);
|
|
139
|
-
Reflect.set(childrenRows, child, aChild);
|
|
140
|
-
Reflect.deleteProperty(result, child);
|
|
141
|
-
});
|
|
142
|
-
Reflect.ownKeys(childrenRows).forEach((child) => {
|
|
143
|
-
const childO = get(childrenRows, child);
|
|
144
|
-
if (childO) {
|
|
145
|
-
const childRecords = getArray(childO, 'records', []);
|
|
146
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
147
|
-
childRecords.forEach((record, index) => {
|
|
148
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
149
|
-
const newResult = {};
|
|
150
|
-
Object.entries(record).forEach(([key, value]) => {
|
|
151
|
-
if (!index) {
|
|
152
|
-
Reflect.defineProperty(result, `${child.toString()}.${key}`, {
|
|
153
|
-
value: value ?? chalk.bold('null'),
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
Reflect.defineProperty(newResult, `${child.toString()}.${key}`, {
|
|
158
|
-
value: value ?? chalk.bold('null'),
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
if (index) {
|
|
163
|
-
subResults.push(newResult);
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
newResults.push(result, ...subResults);
|
|
170
|
-
return newResults;
|
|
171
|
-
}, []);
|
|
172
|
-
return qr;
|
|
173
|
-
}
|
|
174
|
-
return queryResults;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
const SEPARATOR = ',';
|
|
178
|
-
const DOUBLE_QUOTE = '"';
|
|
179
|
-
const SHOULD_QUOTE_REGEXP = new RegExp(`[${SEPARATOR}${DOUBLE_QUOTE}${EOL}]`);
|
|
180
|
-
export class CsvReporter extends QueryReporter {
|
|
181
|
-
constructor(data, columns) {
|
|
182
|
-
super(data, columns);
|
|
183
|
-
}
|
|
184
|
-
display() {
|
|
185
|
-
const attributeNames = this.massageRows();
|
|
186
|
-
// begin output
|
|
187
|
-
ux.log(attributeNames.map((name) => escape(name)).join(SEPARATOR));
|
|
188
|
-
// explained why we need this below - foreach does not allow types
|
|
189
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
190
|
-
// @ts-ignore
|
|
191
|
-
this.data.result.records.forEach((row) => {
|
|
192
|
-
const values = attributeNames.map((name) => {
|
|
193
|
-
// try get(row, name) first, then if it fails, default to row[name]. The default will happen in bulk cases.
|
|
194
|
-
// the standard case returns {field:{nested: 'value'}}, while the bulk will return {field.nested: 'value'}
|
|
195
|
-
const value = get(row, name, row[name]);
|
|
196
|
-
if (isString(value)) {
|
|
197
|
-
return escape(value);
|
|
198
|
-
// if value is null, then typeof value === 'object' so check before typeof to avoid illegal csv
|
|
199
|
-
}
|
|
200
|
-
else if (value === null) {
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
else if (typeof value === 'object') {
|
|
204
|
-
return escape(JSON.stringify(value));
|
|
205
|
-
}
|
|
206
|
-
return value;
|
|
207
|
-
});
|
|
208
|
-
ux.log(values.join(SEPARATOR));
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
massageRows() {
|
|
212
|
-
const fields = this.columns;
|
|
213
|
-
const hasSubqueries = fields.some((field) => field.fieldType === FieldType.subqueryField);
|
|
214
|
-
const hasFunctions = fields.some((field) => field.fieldType === FieldType.functionField);
|
|
215
|
-
const attributeNames = [];
|
|
216
|
-
if (fields) {
|
|
217
|
-
this.logger.info(`Found fields ${JSON.stringify(fields.map((field) => `${typeof field}.${field.name}`))}`);
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
this.logger.info(`No fields found for query "${this.data.query}"`);
|
|
221
|
-
}
|
|
222
|
-
if (hasSubqueries || hasFunctions) {
|
|
223
|
-
// If there are subqueries, we need to get the max child length for each subquery.
|
|
224
|
-
const typeLengths = new Map();
|
|
225
|
-
// For function fields, like avg(total).
|
|
226
|
-
const aggregates = [];
|
|
227
|
-
fields.forEach((field) => {
|
|
228
|
-
if (field.fieldType === FieldType.subqueryField) {
|
|
229
|
-
typeLengths.set(field.name, 0);
|
|
230
|
-
}
|
|
231
|
-
if (field.fieldType === FieldType.functionField) {
|
|
232
|
-
aggregates.push(field);
|
|
233
|
-
}
|
|
234
|
-
});
|
|
235
|
-
// Get max lengths by iterating over the records once
|
|
236
|
-
this.data.result.records.forEach((result) => {
|
|
237
|
-
[...typeLengths.keys()].forEach((key) => {
|
|
238
|
-
const record = get(result, key);
|
|
239
|
-
const totalSize = getNumber(record, 'totalSize');
|
|
240
|
-
if (!!totalSize && totalSize > (typeLengths.get(key) ?? 0)) {
|
|
241
|
-
typeLengths.set(key, totalSize);
|
|
242
|
-
}
|
|
243
|
-
});
|
|
244
|
-
// Aggregates are soql functions that aggregate data, like "SELECT avg(total)" and
|
|
245
|
-
// are returned in the data as exprX. Aggregates can have aliases, like "avg(total) totalAverage"
|
|
246
|
-
// and are returned in the data as the alias.
|
|
247
|
-
if (aggregates.length > 0) {
|
|
248
|
-
for (let i = 0; i < aggregates.length; i++) {
|
|
249
|
-
const aggregate = aggregates[i];
|
|
250
|
-
if (!aggregate.alias) {
|
|
251
|
-
Reflect.set(result, aggregate.name, Reflect.get(result, `expr${i}`));
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
});
|
|
256
|
-
fields.forEach((field) => {
|
|
257
|
-
if (typeLengths.get(field.name)) {
|
|
258
|
-
for (let i = 0; i < (typeLengths.get(field.name) ?? 0); i++) {
|
|
259
|
-
attributeNames.push(`${field.name}.totalSize`);
|
|
260
|
-
(field.fields ?? []).forEach((subfield) => {
|
|
261
|
-
attributeNames.push(`${field.name}.records.${i}.${subfield.name}`);
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
else if (field.fieldType === FieldType.functionField) {
|
|
266
|
-
if (field.alias) {
|
|
267
|
-
attributeNames.push(field.alias);
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
attributeNames.push(field.name);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
else {
|
|
274
|
-
attributeNames.push(field.name);
|
|
275
|
-
}
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
attributeNames.push(...fields.map((field) => field.name));
|
|
280
|
-
}
|
|
281
|
-
return attributeNames;
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
export class JsonReporter extends QueryReporter {
|
|
285
|
-
constructor(data, columns) {
|
|
286
|
-
super(data, columns);
|
|
287
|
-
}
|
|
288
|
-
// eslint-disable-next-line class-methods-use-this
|
|
289
|
-
log() {
|
|
290
|
-
return;
|
|
291
|
-
}
|
|
292
|
-
display() {
|
|
293
|
-
ux.styledJSON({ status: 0, result: this.data.result });
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
const prepColumns = (columns) => {
|
|
297
|
-
const formattedColumns = {};
|
|
298
|
-
columns
|
|
299
|
-
.map((field) => field)
|
|
300
|
-
.filter(isString)
|
|
301
|
-
.map((field) => (formattedColumns[field] = {
|
|
302
|
-
header: field.toUpperCase(),
|
|
303
|
-
get: (row) => {
|
|
304
|
-
// first test if key exists, if so, return value
|
|
305
|
-
if (Reflect.has(row, field)) {
|
|
306
|
-
return Reflect.get(row, field) ?? '';
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
309
|
-
// if not, try to find it query
|
|
310
|
-
return get(row, field) ?? '';
|
|
311
|
-
}
|
|
312
|
-
},
|
|
313
|
-
}));
|
|
314
|
-
return formattedColumns;
|
|
315
|
-
};
|
|
316
|
-
/**
|
|
317
|
-
* Escape a value to be placed in a CSV row. We follow rfc 4180
|
|
318
|
-
* https://tools.ietf.org/html/rfc4180#section-2 and will not surround the
|
|
319
|
-
* value in quotes if it doesn't contain the separator, double quote, or EOL.
|
|
320
|
-
*
|
|
321
|
-
* @param value The escaped value
|
|
322
|
-
*/
|
|
323
|
-
export const escape = (value) => {
|
|
324
|
-
if (value && SHOULD_QUOTE_REGEXP.test(value)) {
|
|
325
|
-
return `"${value.replace(/"/gi, '""')}"`;
|
|
326
|
-
}
|
|
327
|
-
return value;
|
|
328
|
-
};
|
|
329
|
-
export const getResultMessage = (jobInfo) => reporterMessages.getMessage('bulkV2Result', [
|
|
330
|
-
jobInfo.id,
|
|
331
|
-
capitalCase(jobInfo.state),
|
|
332
|
-
jobInfo.numberRecordsProcessed,
|
|
333
|
-
jobInfo.numberRecordsFailed,
|
|
334
|
-
]);
|
|
335
|
-
//# sourceMappingURL=reporters.js.map
|
package/lib/reporters.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reporters.js","sourceRoot":"","sources":["../src/reporters.ts"],"names":[],"mappings":"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"}
|