@salesforce/plugin-data 3.11.6 → 3.12.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 +66 -58
- package/lib/bulkDataRequestCache.js +43 -56
- package/lib/bulkDataRequestCache.js.map +1 -1
- package/lib/bulkIngest.js +176 -14
- package/lib/bulkIngest.js.map +1 -1
- package/lib/bulkUtils.js +1 -81
- package/lib/bulkUtils.js.map +1 -1
- package/lib/commands/data/delete/bulk.js +41 -10
- package/lib/commands/data/delete/bulk.js.map +1 -1
- package/lib/commands/data/delete/resume.js +25 -11
- package/lib/commands/data/delete/resume.js.map +1 -1
- package/lib/commands/data/export/resume.js +2 -4
- package/lib/commands/data/export/resume.js.map +1 -1
- package/lib/commands/data/import/bulk.js +6 -2
- package/lib/commands/data/import/bulk.js.map +1 -1
- package/lib/commands/data/import/resume.js +3 -0
- package/lib/commands/data/import/resume.js.map +1 -1
- package/lib/commands/data/query/resume.js +8 -16
- package/lib/commands/data/query/resume.js.map +1 -1
- package/lib/commands/data/update/bulk.js +8 -8
- package/lib/commands/data/update/bulk.js.map +1 -1
- package/lib/commands/data/update/resume.js +3 -0
- package/lib/commands/data/update/resume.js.map +1 -1
- package/lib/commands/data/upsert/bulk.js +42 -12
- package/lib/commands/data/upsert/bulk.js.map +1 -1
- package/lib/commands/data/upsert/resume.js +25 -11
- package/lib/commands/data/upsert/resume.js.map +1 -1
- package/lib/flags.js +5 -0
- package/lib/flags.js.map +1 -1
- package/messages/bulkIngest.md +54 -1
- package/messages/data.import.bulk.md +0 -4
- package/messages/data.update.bulk.md +0 -8
- package/messages/messages.md +2 -31
- package/oclif.manifest.json +126 -83
- package/package.json +4 -4
- package/lib/bulkOperationBase.js +0 -163
- package/lib/bulkOperationBase.js.map +0 -1
- package/lib/resumeBulkBaseCommand.js +0 -69
- package/lib/resumeBulkBaseCommand.js.map +0 -1
- package/messages/bulk.operation.command.md +0 -23
- package/messages/bulk.resume.command.md +0 -15
package/oclif.manifest.json
CHANGED
|
@@ -424,83 +424,6 @@
|
|
|
424
424
|
"search:data"
|
|
425
425
|
]
|
|
426
426
|
},
|
|
427
|
-
"data:bulk:results": {
|
|
428
|
-
"aliases": [],
|
|
429
|
-
"args": {},
|
|
430
|
-
"description": "Use this command to get the complete results after running one of the CLI commands that uses Bulk API 2.0 to ingest (import, update, upsert, or delete) large datasets to your org, such as \"data import bulk\". The previously-run bulk command must have completed; if it's still processing, run the corresponding resume command first, such as \"data import resume.\" Make note of the job ID of the previous bulk command because you use it to run this command. \n\nYou can also use this command to get results from running a bulk ingest job with a different tool, such as Data Loader, as long as you have the job ID. For information on Data Loader, see https://developer.salesforce.com/docs/atlas.en-us.dataLoader.meta/dataLoader/data_loader_intro.htm. \n\nThis command first displays the status of the previous bulk job, the operation that was executed in the org (such as insert or hard delete), and the updated Salesforce object. The command then displays how many records were processed in total, and how many were successful or failed. Finally, the output displays the names of the generated CSV-formatted files that contain the specific results for each ingested record. Depending on the success or failure of the bulk command, the results files can include the IDs of inserted records or the specific errors. When possible, if the ingest job failed or was aborted, you also get a CSV file with the unprocessed results.",
|
|
431
|
-
"examples": [
|
|
432
|
-
"Get results from a bulk ingest job; use the org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --job-id 7507i000fake341G --target-org my-scratch"
|
|
433
|
-
],
|
|
434
|
-
"flags": {
|
|
435
|
-
"json": {
|
|
436
|
-
"description": "Format output as json.",
|
|
437
|
-
"helpGroup": "GLOBAL",
|
|
438
|
-
"name": "json",
|
|
439
|
-
"allowNo": false,
|
|
440
|
-
"type": "boolean"
|
|
441
|
-
},
|
|
442
|
-
"flags-dir": {
|
|
443
|
-
"helpGroup": "GLOBAL",
|
|
444
|
-
"name": "flags-dir",
|
|
445
|
-
"summary": "Import flag values from a directory.",
|
|
446
|
-
"hasDynamicHelp": false,
|
|
447
|
-
"multiple": false,
|
|
448
|
-
"type": "option"
|
|
449
|
-
},
|
|
450
|
-
"job-id": {
|
|
451
|
-
"char": "i",
|
|
452
|
-
"name": "job-id",
|
|
453
|
-
"required": true,
|
|
454
|
-
"summary": "Job ID of the bulk job.",
|
|
455
|
-
"hasDynamicHelp": false,
|
|
456
|
-
"multiple": false,
|
|
457
|
-
"type": "option"
|
|
458
|
-
},
|
|
459
|
-
"target-org": {
|
|
460
|
-
"char": "o",
|
|
461
|
-
"name": "target-org",
|
|
462
|
-
"noCacheDefault": true,
|
|
463
|
-
"required": true,
|
|
464
|
-
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
465
|
-
"hasDynamicHelp": true,
|
|
466
|
-
"multiple": false,
|
|
467
|
-
"type": "option"
|
|
468
|
-
},
|
|
469
|
-
"api-version": {
|
|
470
|
-
"description": "Override the api version used for api requests made by this command",
|
|
471
|
-
"name": "api-version",
|
|
472
|
-
"hasDynamicHelp": false,
|
|
473
|
-
"multiple": false,
|
|
474
|
-
"type": "option"
|
|
475
|
-
}
|
|
476
|
-
},
|
|
477
|
-
"hasDynamicHelp": true,
|
|
478
|
-
"hiddenAliases": [],
|
|
479
|
-
"id": "data:bulk:results",
|
|
480
|
-
"pluginAlias": "@salesforce/plugin-data",
|
|
481
|
-
"pluginName": "@salesforce/plugin-data",
|
|
482
|
-
"pluginType": "core",
|
|
483
|
-
"strict": true,
|
|
484
|
-
"summary": "Get the results of a bulk ingest job that you previously ran.",
|
|
485
|
-
"enableJsonFlag": true,
|
|
486
|
-
"isESM": true,
|
|
487
|
-
"relativePath": [
|
|
488
|
-
"lib",
|
|
489
|
-
"commands",
|
|
490
|
-
"data",
|
|
491
|
-
"bulk",
|
|
492
|
-
"results.js"
|
|
493
|
-
],
|
|
494
|
-
"aliasPermutations": [],
|
|
495
|
-
"permutations": [
|
|
496
|
-
"data:bulk:results",
|
|
497
|
-
"bulk:data:results",
|
|
498
|
-
"bulk:results:data",
|
|
499
|
-
"data:results:bulk",
|
|
500
|
-
"results:data:bulk",
|
|
501
|
-
"results:bulk:data"
|
|
502
|
-
]
|
|
503
|
-
},
|
|
504
427
|
"data:create:file": {
|
|
505
428
|
"aliases": [],
|
|
506
429
|
"args": {},
|
|
@@ -758,6 +681,83 @@
|
|
|
758
681
|
"record:create:data"
|
|
759
682
|
]
|
|
760
683
|
},
|
|
684
|
+
"data:bulk:results": {
|
|
685
|
+
"aliases": [],
|
|
686
|
+
"args": {},
|
|
687
|
+
"description": "Use this command to get the complete results after running one of the CLI commands that uses Bulk API 2.0 to ingest (import, update, upsert, or delete) large datasets to your org, such as \"data import bulk\". The previously-run bulk command must have completed; if it's still processing, run the corresponding resume command first, such as \"data import resume.\" Make note of the job ID of the previous bulk command because you use it to run this command. \n\nYou can also use this command to get results from running a bulk ingest job with a different tool, such as Data Loader, as long as you have the job ID. For information on Data Loader, see https://developer.salesforce.com/docs/atlas.en-us.dataLoader.meta/dataLoader/data_loader_intro.htm. \n\nThis command first displays the status of the previous bulk job, the operation that was executed in the org (such as insert or hard delete), and the updated Salesforce object. The command then displays how many records were processed in total, and how many were successful or failed. Finally, the output displays the names of the generated CSV-formatted files that contain the specific results for each ingested record. Depending on the success or failure of the bulk command, the results files can include the IDs of inserted records or the specific errors. When possible, if the ingest job failed or was aborted, you also get a CSV file with the unprocessed results.",
|
|
688
|
+
"examples": [
|
|
689
|
+
"Get results from a bulk ingest job; use the org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --job-id 7507i000fake341G --target-org my-scratch"
|
|
690
|
+
],
|
|
691
|
+
"flags": {
|
|
692
|
+
"json": {
|
|
693
|
+
"description": "Format output as json.",
|
|
694
|
+
"helpGroup": "GLOBAL",
|
|
695
|
+
"name": "json",
|
|
696
|
+
"allowNo": false,
|
|
697
|
+
"type": "boolean"
|
|
698
|
+
},
|
|
699
|
+
"flags-dir": {
|
|
700
|
+
"helpGroup": "GLOBAL",
|
|
701
|
+
"name": "flags-dir",
|
|
702
|
+
"summary": "Import flag values from a directory.",
|
|
703
|
+
"hasDynamicHelp": false,
|
|
704
|
+
"multiple": false,
|
|
705
|
+
"type": "option"
|
|
706
|
+
},
|
|
707
|
+
"job-id": {
|
|
708
|
+
"char": "i",
|
|
709
|
+
"name": "job-id",
|
|
710
|
+
"required": true,
|
|
711
|
+
"summary": "Job ID of the bulk job.",
|
|
712
|
+
"hasDynamicHelp": false,
|
|
713
|
+
"multiple": false,
|
|
714
|
+
"type": "option"
|
|
715
|
+
},
|
|
716
|
+
"target-org": {
|
|
717
|
+
"char": "o",
|
|
718
|
+
"name": "target-org",
|
|
719
|
+
"noCacheDefault": true,
|
|
720
|
+
"required": true,
|
|
721
|
+
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
722
|
+
"hasDynamicHelp": true,
|
|
723
|
+
"multiple": false,
|
|
724
|
+
"type": "option"
|
|
725
|
+
},
|
|
726
|
+
"api-version": {
|
|
727
|
+
"description": "Override the api version used for api requests made by this command",
|
|
728
|
+
"name": "api-version",
|
|
729
|
+
"hasDynamicHelp": false,
|
|
730
|
+
"multiple": false,
|
|
731
|
+
"type": "option"
|
|
732
|
+
}
|
|
733
|
+
},
|
|
734
|
+
"hasDynamicHelp": true,
|
|
735
|
+
"hiddenAliases": [],
|
|
736
|
+
"id": "data:bulk:results",
|
|
737
|
+
"pluginAlias": "@salesforce/plugin-data",
|
|
738
|
+
"pluginName": "@salesforce/plugin-data",
|
|
739
|
+
"pluginType": "core",
|
|
740
|
+
"strict": true,
|
|
741
|
+
"summary": "Get the results of a bulk ingest job that you previously ran.",
|
|
742
|
+
"enableJsonFlag": true,
|
|
743
|
+
"isESM": true,
|
|
744
|
+
"relativePath": [
|
|
745
|
+
"lib",
|
|
746
|
+
"commands",
|
|
747
|
+
"data",
|
|
748
|
+
"bulk",
|
|
749
|
+
"results.js"
|
|
750
|
+
],
|
|
751
|
+
"aliasPermutations": [],
|
|
752
|
+
"permutations": [
|
|
753
|
+
"data:bulk:results",
|
|
754
|
+
"bulk:data:results",
|
|
755
|
+
"bulk:results:data",
|
|
756
|
+
"data:results:bulk",
|
|
757
|
+
"results:data:bulk",
|
|
758
|
+
"results:bulk:data"
|
|
759
|
+
]
|
|
760
|
+
},
|
|
761
761
|
"data:delete:bulk": {
|
|
762
762
|
"aliases": [],
|
|
763
763
|
"args": {},
|
|
@@ -875,6 +875,20 @@
|
|
|
875
875
|
"allowNo": false,
|
|
876
876
|
"type": "boolean"
|
|
877
877
|
},
|
|
878
|
+
"line-ending": {
|
|
879
|
+
"dependsOn": [
|
|
880
|
+
"file"
|
|
881
|
+
],
|
|
882
|
+
"name": "line-ending",
|
|
883
|
+
"summary": "Line ending used in the CSV file. Default value on Windows is `CRLF`; on macOS and Linux it's `LF`.",
|
|
884
|
+
"hasDynamicHelp": false,
|
|
885
|
+
"multiple": false,
|
|
886
|
+
"options": [
|
|
887
|
+
"CRLF",
|
|
888
|
+
"LF"
|
|
889
|
+
],
|
|
890
|
+
"type": "option"
|
|
891
|
+
},
|
|
878
892
|
"hard-delete": {
|
|
879
893
|
"description": "You must have the \"Bulk API Hard Delete\" system permission to use this flag. The permission is disabled by default and can be enabled only by a system administrator.",
|
|
880
894
|
"name": "hard-delete",
|
|
@@ -1146,7 +1160,7 @@
|
|
|
1146
1160
|
"wait": {
|
|
1147
1161
|
"name": "wait",
|
|
1148
1162
|
"summary": "Number of minutes to wait for the command to complete before displaying the results.",
|
|
1149
|
-
"default": "
|
|
1163
|
+
"default": "5 minutes",
|
|
1150
1164
|
"hasDynamicHelp": true,
|
|
1151
1165
|
"multiple": false,
|
|
1152
1166
|
"type": "option"
|
|
@@ -1902,7 +1916,7 @@
|
|
|
1902
1916
|
},
|
|
1903
1917
|
"column-delimiter": {
|
|
1904
1918
|
"name": "column-delimiter",
|
|
1905
|
-
"summary": "Column delimiter used in the CSV file.
|
|
1919
|
+
"summary": "Column delimiter used in the CSV file.",
|
|
1906
1920
|
"hasDynamicHelp": false,
|
|
1907
1921
|
"multiple": false,
|
|
1908
1922
|
"options": [
|
|
@@ -2216,7 +2230,7 @@
|
|
|
2216
2230
|
"deprecateAliases": true,
|
|
2217
2231
|
"name": "target-org",
|
|
2218
2232
|
"noCacheDefault": true,
|
|
2219
|
-
"summary": "Username or alias of the target org.
|
|
2233
|
+
"summary": "Username or alias of the target org.",
|
|
2220
2234
|
"hasDynamicHelp": true,
|
|
2221
2235
|
"multiple": false,
|
|
2222
2236
|
"type": "option"
|
|
@@ -2517,7 +2531,7 @@
|
|
|
2517
2531
|
},
|
|
2518
2532
|
"column-delimiter": {
|
|
2519
2533
|
"name": "column-delimiter",
|
|
2520
|
-
"summary": "Column delimiter used in the CSV file.
|
|
2534
|
+
"summary": "Column delimiter used in the CSV file.",
|
|
2521
2535
|
"hasDynamicHelp": false,
|
|
2522
2536
|
"multiple": false,
|
|
2523
2537
|
"options": [
|
|
@@ -2931,6 +2945,35 @@
|
|
|
2931
2945
|
"allowNo": false,
|
|
2932
2946
|
"type": "boolean"
|
|
2933
2947
|
},
|
|
2948
|
+
"line-ending": {
|
|
2949
|
+
"dependsOn": [
|
|
2950
|
+
"file"
|
|
2951
|
+
],
|
|
2952
|
+
"name": "line-ending",
|
|
2953
|
+
"summary": "Line ending used in the CSV file. Default value on Windows is `CRLF`; on macOS and Linux it's `LF`.",
|
|
2954
|
+
"hasDynamicHelp": false,
|
|
2955
|
+
"multiple": false,
|
|
2956
|
+
"options": [
|
|
2957
|
+
"CRLF",
|
|
2958
|
+
"LF"
|
|
2959
|
+
],
|
|
2960
|
+
"type": "option"
|
|
2961
|
+
},
|
|
2962
|
+
"column-delimiter": {
|
|
2963
|
+
"name": "column-delimiter",
|
|
2964
|
+
"summary": "Column delimiter used in the CSV file.",
|
|
2965
|
+
"hasDynamicHelp": false,
|
|
2966
|
+
"multiple": false,
|
|
2967
|
+
"options": [
|
|
2968
|
+
"BACKQUOTE",
|
|
2969
|
+
"CARET",
|
|
2970
|
+
"COMMA",
|
|
2971
|
+
"PIPE",
|
|
2972
|
+
"SEMICOLON",
|
|
2973
|
+
"TAB"
|
|
2974
|
+
],
|
|
2975
|
+
"type": "option"
|
|
2976
|
+
},
|
|
2934
2977
|
"external-id": {
|
|
2935
2978
|
"aliases": [
|
|
2936
2979
|
"externalid"
|
|
@@ -3034,7 +3077,7 @@
|
|
|
3034
3077
|
"wait": {
|
|
3035
3078
|
"name": "wait",
|
|
3036
3079
|
"summary": "Number of minutes to wait for the command to complete before displaying the results.",
|
|
3037
|
-
"default": "
|
|
3080
|
+
"default": "5 minutes",
|
|
3038
3081
|
"hasDynamicHelp": true,
|
|
3039
3082
|
"multiple": false,
|
|
3040
3083
|
"type": "option"
|
|
@@ -3837,5 +3880,5 @@
|
|
|
3837
3880
|
]
|
|
3838
3881
|
}
|
|
3839
3882
|
},
|
|
3840
|
-
"version": "3.
|
|
3883
|
+
"version": "3.12.0"
|
|
3841
3884
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/plugin-data",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.12.0",
|
|
4
4
|
"description": "Plugin for salesforce data commands",
|
|
5
5
|
"author": "Salesforce",
|
|
6
6
|
"homepage": "https://github.com/salesforcecli/plugin-data",
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
"version": "oclif readme"
|
|
119
119
|
},
|
|
120
120
|
"dependencies": {
|
|
121
|
-
"@jsforce/jsforce-node": "^3.6.
|
|
121
|
+
"@jsforce/jsforce-node": "^3.6.3",
|
|
122
122
|
"@oclif/multi-stage-output": "^0.7.12",
|
|
123
123
|
"@salesforce/core": "^8.6.1",
|
|
124
124
|
"@salesforce/kit": "^3.2.2",
|
|
@@ -265,7 +265,7 @@
|
|
|
265
265
|
"exports": "./lib/index.js",
|
|
266
266
|
"type": "module",
|
|
267
267
|
"sfdx": {
|
|
268
|
-
"publicKeyUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-data/3.
|
|
269
|
-
"signatureUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-data/3.
|
|
268
|
+
"publicKeyUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-data/3.12.0.crt",
|
|
269
|
+
"signatureUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-data/3.12.0.sig"
|
|
270
270
|
}
|
|
271
271
|
}
|
package/lib/bulkOperationBase.js
DELETED
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023, 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 fs from 'node:fs';
|
|
8
|
-
import os from 'node:os';
|
|
9
|
-
import { Flags } from '@salesforce/sf-plugins-core';
|
|
10
|
-
import { Messages, SfError } from '@salesforce/core';
|
|
11
|
-
import { Ux } from '@salesforce/sf-plugins-core/Ux';
|
|
12
|
-
import { BulkV2, } from '@jsforce/jsforce-node/lib/api/bulk2.js';
|
|
13
|
-
import { orgFlags } from './flags.js';
|
|
14
|
-
import { BulkDeleteRequestCache, BulkUpsertRequestCache } from './bulkDataRequestCache.js';
|
|
15
|
-
import { POLL_FREQUENCY_MS, isBulkV2RequestDone, transformResults, validateSobjectType, remainingTime, displayBulkV2Result, getRemainingTimeStatus, setupLifecycleListeners, } from './bulkUtils.js';
|
|
16
|
-
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
17
|
-
const messages = Messages.loadMessages('@salesforce/plugin-data', 'bulk.operation.command');
|
|
18
|
-
export const baseFlags = {
|
|
19
|
-
...orgFlags,
|
|
20
|
-
file: Flags.file({
|
|
21
|
-
char: 'f',
|
|
22
|
-
summary: messages.getMessage('flags.csvfile.summary'),
|
|
23
|
-
required: true,
|
|
24
|
-
exists: true,
|
|
25
|
-
aliases: ['csvfile'],
|
|
26
|
-
deprecateAliases: true,
|
|
27
|
-
}),
|
|
28
|
-
sobject: Flags.string({
|
|
29
|
-
char: 's',
|
|
30
|
-
summary: messages.getMessage('flags.sobject.summary'),
|
|
31
|
-
required: true,
|
|
32
|
-
aliases: ['sobjecttype'],
|
|
33
|
-
deprecateAliases: true,
|
|
34
|
-
}),
|
|
35
|
-
wait: Flags.duration({
|
|
36
|
-
char: 'w',
|
|
37
|
-
unit: 'minutes',
|
|
38
|
-
summary: messages.getMessage('flags.wait.summary'),
|
|
39
|
-
min: 0,
|
|
40
|
-
defaultValue: 0,
|
|
41
|
-
exclusive: ['async'],
|
|
42
|
-
}),
|
|
43
|
-
async: Flags.boolean({
|
|
44
|
-
char: 'a',
|
|
45
|
-
summary: messages.getMessage('flags.async.summary'),
|
|
46
|
-
exclusive: ['wait'],
|
|
47
|
-
}),
|
|
48
|
-
verbose: Flags.boolean({
|
|
49
|
-
summary: messages.getMessage('flags.verbose.summary'),
|
|
50
|
-
deprecated: {
|
|
51
|
-
message: 'The --verbose flag is deprecated and will be removed after March 2025, use "sf data bulk results" to get job results instead.',
|
|
52
|
-
},
|
|
53
|
-
}),
|
|
54
|
-
};
|
|
55
|
-
export const runBulkOperation = async ({ sobject, csvFileName, connection, wait, verbose, operation, options, cmd, }) => {
|
|
56
|
-
const isAsync = !wait;
|
|
57
|
-
try {
|
|
58
|
-
const [cache] = await Promise.all([getCache(operation), validateSobjectType(sobject, connection)]);
|
|
59
|
-
const csvRecords = fs.createReadStream(csvFileName, { encoding: 'utf-8' });
|
|
60
|
-
cmd.spinner.start(`Running ${isAsync ? 'async ' : ''}bulk ${operation} request`);
|
|
61
|
-
const endWaitTime = Date.now() + wait.milliseconds;
|
|
62
|
-
// eslint-disable-next-line no-param-reassign
|
|
63
|
-
cmd.spinner.status = getRemainingTimeStatus({ isAsync, endWaitTime });
|
|
64
|
-
const createJobOptions = {
|
|
65
|
-
object: sobject,
|
|
66
|
-
operation,
|
|
67
|
-
externalIdFieldName: options?.extIdField,
|
|
68
|
-
...(os.platform() === 'win32' ? { lineEnding: 'CRLF' } : {}),
|
|
69
|
-
};
|
|
70
|
-
const bulk2 = new BulkV2(connection);
|
|
71
|
-
const job = bulk2.createJob(createJobOptions);
|
|
72
|
-
setupLifecycleListeners({
|
|
73
|
-
job,
|
|
74
|
-
cache,
|
|
75
|
-
username: connection.getUsername(),
|
|
76
|
-
apiVersion: connection.getApiVersion(),
|
|
77
|
-
isAsync,
|
|
78
|
-
cmd,
|
|
79
|
-
endWaitTime,
|
|
80
|
-
});
|
|
81
|
-
try {
|
|
82
|
-
const jobInfo = await executeBulkV2DataRequest(job, csvRecords, endWaitTime);
|
|
83
|
-
if (isAsync) {
|
|
84
|
-
await cache?.createCacheEntryForRequest(job.id ?? '', connection?.getUsername(), connection?.getApiVersion());
|
|
85
|
-
}
|
|
86
|
-
displayBulkV2Result({ jobInfo, isAsync, cmd, username: connection.getUsername() });
|
|
87
|
-
const result = { jobInfo };
|
|
88
|
-
if (!isBulkV2RequestDone(jobInfo)) {
|
|
89
|
-
return result;
|
|
90
|
-
}
|
|
91
|
-
if (cmd.jsonEnabled()) {
|
|
92
|
-
result.records = transformResults(await job.getAllResults());
|
|
93
|
-
}
|
|
94
|
-
// We only print human readable error outputs if --json is not specified.
|
|
95
|
-
// The JSON result itself will already contain the error information (see above).
|
|
96
|
-
else if (verbose) {
|
|
97
|
-
const records = await job.getAllResults();
|
|
98
|
-
if (records?.failedResults?.length > 0) {
|
|
99
|
-
printBulkErrors(records.failedResults);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return result;
|
|
103
|
-
}
|
|
104
|
-
catch (err) {
|
|
105
|
-
if (err instanceof Error && err.name === 'FEATURENOTENABLED' && operation === 'hardDelete') {
|
|
106
|
-
// add info specific to hardDelete permission
|
|
107
|
-
err.message = messages.getMessage('hard-delete-permission-error');
|
|
108
|
-
}
|
|
109
|
-
cmd.spinner.stop();
|
|
110
|
-
throw err;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
finally {
|
|
114
|
-
cmd.spinner.stop();
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
const getCache = async (operation) => {
|
|
118
|
-
switch (operation) {
|
|
119
|
-
case 'hardDelete':
|
|
120
|
-
case 'delete':
|
|
121
|
-
return BulkDeleteRequestCache.create();
|
|
122
|
-
case 'upsert':
|
|
123
|
-
return BulkUpsertRequestCache.create();
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
/**
|
|
127
|
-
* create and execute batches based on the record arrays; wait for completion response if -w flag is set with > 0 minutes
|
|
128
|
-
* to get proper logging/printing to console pass the instance of UX that called this method
|
|
129
|
-
*
|
|
130
|
-
* @param job {IngestJobV2}
|
|
131
|
-
* @param input
|
|
132
|
-
* @param endWaitTime
|
|
133
|
-
*/
|
|
134
|
-
const executeBulkV2DataRequest = async (job, input, endWaitTime) => {
|
|
135
|
-
await job.open();
|
|
136
|
-
job.emit('jobProgress', { remainingTime: remainingTime(Date.now())(endWaitTime), stage: 'uploading' });
|
|
137
|
-
await job.uploadData(input);
|
|
138
|
-
job.emit('jobProgress', { remainingTime: remainingTime(Date.now())(endWaitTime), stage: 'uploadComplete' });
|
|
139
|
-
await job.close();
|
|
140
|
-
if (endWaitTime && Date.now() < endWaitTime) {
|
|
141
|
-
try {
|
|
142
|
-
await job.poll(POLL_FREQUENCY_MS, remainingTime(Date.now())(endWaitTime));
|
|
143
|
-
}
|
|
144
|
-
catch (e) {
|
|
145
|
-
if (e instanceof Error && e.name !== 'JobPollingTimeout') {
|
|
146
|
-
// timeout errors are handled by the 'job.once('jobTimeout')' listener - throw anything else
|
|
147
|
-
throw SfError.wrap(e);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
return job.check();
|
|
152
|
-
};
|
|
153
|
-
const printBulkErrors = (failedResults) => {
|
|
154
|
-
const ux = new Ux();
|
|
155
|
-
ux.log();
|
|
156
|
-
ux.table({
|
|
157
|
-
// eslint-disable-next-line camelcase
|
|
158
|
-
data: failedResults.map((f) => ({ id: 'Id' in f ? f.Id : '', sfId: f.sf__Id, error: f.sf__Error })),
|
|
159
|
-
columns: ['id', { key: 'sfId', name: 'Sf_Id' }, 'error'],
|
|
160
|
-
title: `Bulk Failures [${failedResults.length}]`,
|
|
161
|
-
});
|
|
162
|
-
};
|
|
163
|
-
//# sourceMappingURL=bulkOperationBase.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bulkOperationBase.js","sourceRoot":"","sources":["../src/bulkOperationBase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023, 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 { Flags, SfCommand, loglevel, optionalOrgFlagWithDeprecations } from '@salesforce/sf-plugins-core';
|
|
8
|
-
import { Messages } from '@salesforce/core';
|
|
9
|
-
import { BulkV2 } from '@jsforce/jsforce-node/lib/api/bulk2.js';
|
|
10
|
-
import { POLL_FREQUENCY_MS, displayBulkV2Result, getRemainingTimeStatus, setupLifecycleListeners, isBulkV2RequestDone, remainingTime, transformResults, } from './bulkUtils.js';
|
|
11
|
-
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
12
|
-
const messages = Messages.loadMessages('@salesforce/plugin-data', 'bulk.resume.command');
|
|
13
|
-
export class ResumeBulkCommand extends SfCommand {
|
|
14
|
-
static flags = {
|
|
15
|
-
'target-org': { ...optionalOrgFlagWithDeprecations, summary: messages.getMessage('flags.targetOrg.summary') },
|
|
16
|
-
'job-id': Flags.salesforceId({
|
|
17
|
-
length: 18,
|
|
18
|
-
char: 'i',
|
|
19
|
-
startsWith: '750',
|
|
20
|
-
summary: messages.getMessage('flags.jobid'),
|
|
21
|
-
aliases: ['jobid'],
|
|
22
|
-
deprecateAliases: true,
|
|
23
|
-
}),
|
|
24
|
-
'use-most-recent': Flags.boolean({
|
|
25
|
-
summary: messages.getMessage('flags.useMostRecent.summary'),
|
|
26
|
-
// don't use `exactlyOne` because this defaults to true
|
|
27
|
-
default: true,
|
|
28
|
-
exclusive: ['job-id'],
|
|
29
|
-
}),
|
|
30
|
-
wait: Flags.duration({
|
|
31
|
-
summary: messages.getMessage('flags.wait.summary'),
|
|
32
|
-
unit: 'minutes',
|
|
33
|
-
min: 0,
|
|
34
|
-
defaultValue: 0,
|
|
35
|
-
}),
|
|
36
|
-
'api-version': Flags.orgApiVersion(),
|
|
37
|
-
loglevel,
|
|
38
|
-
};
|
|
39
|
-
async resume(resumeOptions, wait) {
|
|
40
|
-
const endWaitTime = Date.now() + wait.milliseconds;
|
|
41
|
-
this.spinner.start('Getting status');
|
|
42
|
-
const conn = resumeOptions.options.connection;
|
|
43
|
-
const isAsync = wait.milliseconds === 0;
|
|
44
|
-
const bulk2 = new BulkV2(conn);
|
|
45
|
-
const job = bulk2.job('ingest', { id: resumeOptions.jobInfo.id });
|
|
46
|
-
this.spinner.status = getRemainingTimeStatus({ isAsync, endWaitTime });
|
|
47
|
-
setupLifecycleListeners({
|
|
48
|
-
job,
|
|
49
|
-
cmd: this,
|
|
50
|
-
isAsync,
|
|
51
|
-
apiVersion: conn.getApiVersion(),
|
|
52
|
-
username: conn.getUsername(),
|
|
53
|
-
endWaitTime,
|
|
54
|
-
});
|
|
55
|
-
if (Date.now() < endWaitTime) {
|
|
56
|
-
await job.poll(POLL_FREQUENCY_MS, remainingTime(Date.now())(endWaitTime));
|
|
57
|
-
}
|
|
58
|
-
const jobInfo = await job.check();
|
|
59
|
-
this.spinner.stop();
|
|
60
|
-
displayBulkV2Result({ jobInfo, username: conn.getUsername(), isAsync, cmd: this });
|
|
61
|
-
const result = { jobInfo };
|
|
62
|
-
if (!isBulkV2RequestDone(jobInfo) || !this.jsonEnabled()) {
|
|
63
|
-
return result;
|
|
64
|
-
}
|
|
65
|
-
result.records = transformResults(await job.getAllResults());
|
|
66
|
-
return result;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=resumeBulkBaseCommand.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resumeBulkBaseCommand.js","sourceRoot":"","sources":["../src/resumeBulkBaseCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# flags.sobject.summary
|
|
2
|
-
|
|
3
|
-
API name of the Salesforce object, either standard or custom, that you want to update or delete records from.
|
|
4
|
-
|
|
5
|
-
# flags.csvfile.summary
|
|
6
|
-
|
|
7
|
-
CSV file that contains the IDs of the records to update or delete.
|
|
8
|
-
|
|
9
|
-
# flags.wait.summary
|
|
10
|
-
|
|
11
|
-
Number of minutes to wait for the command to complete before displaying the results.
|
|
12
|
-
|
|
13
|
-
# flags.async.summary
|
|
14
|
-
|
|
15
|
-
Run the command asynchronously.
|
|
16
|
-
|
|
17
|
-
# flags.verbose.summary
|
|
18
|
-
|
|
19
|
-
Print verbose output of failed records if result is available.
|
|
20
|
-
|
|
21
|
-
# hard-delete-permission-error
|
|
22
|
-
|
|
23
|
-
You must have the "Bulk API Hard Delete" system permission to use the --hard-delete flag. This permission is disabled by default and can be enabled only by a system administrator.
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# flags.jobid
|
|
2
|
-
|
|
3
|
-
ID of the job you want to resume.
|
|
4
|
-
|
|
5
|
-
# flags.useMostRecent.summary
|
|
6
|
-
|
|
7
|
-
Use the ID of the most recently-run bulk job.
|
|
8
|
-
|
|
9
|
-
# flags.targetOrg.summary
|
|
10
|
-
|
|
11
|
-
Username or alias of the target org. Not required if the "target-org" configuration variable is already set.
|
|
12
|
-
|
|
13
|
-
# flags.wait.summary
|
|
14
|
-
|
|
15
|
-
Number of minutes to wait for the command to complete before displaying the results.
|