Skip to content

Commit

Permalink
Merge pull request #110 from texei/fix-insert-update
Browse files Browse the repository at this point in the history
Improved insert/update for records
  • Loading branch information
FabienTaillon authored Aug 24, 2022
2 parents 91accc8 + 714dcce commit 5366df6
Show file tree
Hide file tree
Showing 4 changed files with 5,717 additions and 5,823 deletions.
42 changes: 21 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ EXAMPLE
--targetusername texei
```

_See code: [src/commands/texei/contractstatus/value/add.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/contractstatus/value/add.ts)_
_See code: [src/commands/texei/contractstatus/value/add.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/contractstatus/value/add.ts)_

## `sfdx texei:cpqsettings:set -f <string> [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -106,7 +106,7 @@ EXAMPLE
sfdx texei:cpqsettings:set
```

_See code: [src/commands/texei/cpqsettings/set.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/cpqsettings/set.ts)_
_See code: [src/commands/texei/cpqsettings/set.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/cpqsettings/set.ts)_

## `sfdx texei:data:export -d <string> [-o <string>] [-p <string>] [-a <string>] [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -144,7 +144,7 @@ EXAMPLES
sfdx texei:data:export --dataplan ./data/data-plan.json --outputdir ./data --targetusername texei
```

_See code: [src/commands/texei/data/export.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/data/export.ts)_
_See code: [src/commands/texei/data/export.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/data/export.ts)_

## `sfdx texei:data:import -d <string> [-a] [-o] [-p <string>] [-i] [-u <string>] [--apiversion <string>] [--verbose] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -190,7 +190,7 @@ EXAMPLE
Data imported!
```

_See code: [src/commands/texei/data/import.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/data/import.ts)_
_See code: [src/commands/texei/data/import.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/data/import.ts)_

## `sfdx texei:data:plan:generate -d <string> -o <string> [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand All @@ -217,7 +217,7 @@ EXAMPLE
$ sfdx texei:data:plan:generate --objects Account,Contact,MyCustomObject__c --outputdir ./data
```

_See code: [src/commands/texei/data/plan/generate.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/data/plan/generate.ts)_
_See code: [src/commands/texei/data/plan/generate.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/data/plan/generate.ts)_

## `sfdx texei:debug:lwc:enable [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand All @@ -244,7 +244,7 @@ EXAMPLE
sfdx texei:debug:lwc:enable --targetusername [email protected]
```

_See code: [src/commands/texei/debug/lwc/enable.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/debug/lwc/enable.ts)_
_See code: [src/commands/texei/debug/lwc/enable.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/debug/lwc/enable.ts)_

## `sfdx texei:org:contractfieldhistory:fix [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -272,7 +272,7 @@ EXAMPLE
History tracking fixed.
```

_See code: [src/commands/texei/org/contractfieldhistory/fix.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/org/contractfieldhistory/fix.ts)_
_See code: [src/commands/texei/org/contractfieldhistory/fix.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/org/contractfieldhistory/fix.ts)_

## `sfdx texei:org:shape:extract [-d <string>] [-s <string>] [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -307,7 +307,7 @@ EXAMPLE
$ sfdx texei:org:shape:extract -u [email protected]
```

_See code: [src/commands/texei/org/shape/extract.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/org/shape/extract.ts)_
_See code: [src/commands/texei/org/shape/extract.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/org/shape/extract.ts)_

## `sfdx texei:package:dependencies:install [-k <string>] [-b <string>] [-p <string>] [-s <string>] [-n <string>] [-w <number>] [-r] [-a <string>] [-v <string>] [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -370,7 +370,7 @@ EXAMPLE
$ texei:package:dependencies:install -u MyScratchOrg -v MyDevHub -k "1:MyPackage1Key 2: 3:MyPackage3Key" -b "DEV"
```

_See code: [src/commands/texei/package/dependencies/install.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/package/dependencies/install.ts)_
_See code: [src/commands/texei/package/dependencies/install.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/package/dependencies/install.ts)_

## `sfdx texei:picklist:restrict -d <string> [-o] [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -405,7 +405,7 @@ EXAMPLE
$ sfdx texei:picklist:restrict -d my-unrestricted-picklists.json
```

_See code: [src/commands/texei/picklist/restrict.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/picklist/restrict.ts)_
_See code: [src/commands/texei/picklist/restrict.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/picklist/restrict.ts)_

## `sfdx texei:picklist:unrestrict [-o] [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -436,7 +436,7 @@ EXAMPLES
$ sfdx texei:picklist:unrestrict --json > my-unrestricted-picklists.json
```

_See code: [src/commands/texei/picklist/unrestrict.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/picklist/unrestrict.ts)_
_See code: [src/commands/texei/picklist/unrestrict.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/picklist/unrestrict.ts)_

## `sfdx texei:profile:clean [-k <string>] [-p <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -469,7 +469,7 @@ EXAMPLES
custom-sfdx-source-folder/main/profiles,source-folder-2/main/profiles/myAdmin.profile-meta.xml
```

_See code: [src/commands/texei/profile/clean.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/profile/clean.ts)_
_See code: [src/commands/texei/profile/clean.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/profile/clean.ts)_

## `sfdx texei:sharedactivities:enable [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand All @@ -496,7 +496,7 @@ EXAMPLE
$ sfdx texei:sharedactivities:enable
```

_See code: [src/commands/texei/sharedactivities/enable.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/sharedactivities/enable.ts)_
_See code: [src/commands/texei/sharedactivities/enable.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/sharedactivities/enable.ts)_

## `sfdx texei:sharingcalc:recalculate [-s <string>] [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -527,7 +527,7 @@ EXAMPLE
Recalculated Sharing Rules
```

_See code: [src/commands/texei/sharingcalc/recalculate.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/sharingcalc/recalculate.ts)_
_See code: [src/commands/texei/sharingcalc/recalculate.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/sharingcalc/recalculate.ts)_

## `sfdx texei:sharingcalc:resume [-s <string>] [-t <number>] [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -561,7 +561,7 @@ EXAMPLE
Sharing calculations resumed
```

_See code: [src/commands/texei/sharingcalc/resume.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/sharingcalc/resume.ts)_
_See code: [src/commands/texei/sharingcalc/resume.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/sharingcalc/resume.ts)_

## `sfdx texei:sharingcalc:suspend [-s <string>] [-t <number>] [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -595,7 +595,7 @@ EXAMPLE
Sharing calculations suspended
```

_See code: [src/commands/texei/sharingcalc/suspend.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/sharingcalc/suspend.ts)_
_See code: [src/commands/texei/sharingcalc/suspend.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/sharingcalc/suspend.ts)_

## `sfdx texei:skinnyprofile:check [-p <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand All @@ -619,7 +619,7 @@ EXAMPLE
$ texei:skinnyprofile:check
```

_See code: [src/commands/texei/skinnyprofile/check.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/skinnyprofile/check.ts)_
_See code: [src/commands/texei/skinnyprofile/check.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/skinnyprofile/check.ts)_

## `sfdx texei:skinnyprofile:retrieve [-t <string>] [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -649,7 +649,7 @@ EXAMPLE
$ texei:skinnyprofile:retrieve -u MyScratchOrg
```

_See code: [src/commands/texei/skinnyprofile/retrieve.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/skinnyprofile/retrieve.ts)_
_See code: [src/commands/texei/skinnyprofile/retrieve.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/skinnyprofile/retrieve.ts)_

## `sfdx texei:source:customlabel:replace -l <string> -v <string> [-p <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand All @@ -673,7 +673,7 @@ EXAMPLE
$ texei:source:customlabel:replace --label GreatSalesforceBlog --value https://blog.texei.com
```

_See code: [src/commands/texei/source/customlabel/replace.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/source/customlabel/replace.ts)_
_See code: [src/commands/texei/source/customlabel/replace.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/source/customlabel/replace.ts)_

## `sfdx texei:source:layouts:cleanorg [-p <string>] [-v <string>] [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -706,7 +706,7 @@ EXAMPLES
$ texei:source:layouts:cleanorg --targetusername myScratchOrg --targetdevhubusername myDevHub
```

_See code: [src/commands/texei/source/layouts/cleanorg.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/source/layouts/cleanorg.ts)_
_See code: [src/commands/texei/source/layouts/cleanorg.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/source/layouts/cleanorg.ts)_

## `sfdx texei:user:update [-v <string>] [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`

Expand Down Expand Up @@ -739,5 +739,5 @@ EXAMPLES
sfdx texei:user:update --values "LanguageLocaleKey=en_US UserPermissionsMarketingUser=true" --json
```

_See code: [src/commands/texei/user/update.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.3/src/commands/texei/user/update.ts)_
_See code: [src/commands/texei/user/update.ts](https://github.com/texei/texei-sfdx-plugin/blob/v1.16.4/src/commands/texei/user/update.ts)_
<!-- commandsstop -->
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "texei-sfdx-plugin",
"description": "Texeï's plugin for sfdx",
"version": "1.16.3",
"version": "1.16.4",
"author": "Texeï",
"bugs": "https://github.com/https://github.com/texei/texei-sfdx-plugin/issues",
"dependencies": {
Expand Down
93 changes: 56 additions & 37 deletions src/commands/texei/data/import.ts
Original file line number Diff line number Diff line change
Expand Up @@ -327,47 +327,66 @@ export default class Import extends SfdxCommand {
sobjectsResult.push(...chunkResults);
}
}
else if (records[0] && records[0].Id) {
// There is an Id, so it's an update
this.debug(`DEBUG updating ${sobjectName} records`);

// Checking if a batch size is specified
const batchSize = batchSizeMap.get(dataFileName) ? batchSizeMap.get(dataFileName) : 200;
for (var i = 0; i < records.length; i += batchSize) {
// @ts-ignore: Don't know why, but TypeScript doesn't use the correct method override
const chunkResults: RecordResult[] = await conn.sobject(sobjectName).update(records.slice(i, i + batchSize), { allowRecursive: true, allOrNone: this.flags.allornone })
.catch(err => {
if (this.flags.ignoreerrors) {
this.ux.log(`Error importing records: ${err}`);
}
else {
throw new SfdxError(`Error importing records: ${err}`);
}
});
sobjectsResult.push(...chunkResults);
}
}
else {
// No Id, insert
this.debug(`DEBUG inserting ${sobjectName} records`);
if (records && records.length > 0) {
let recordsToInsert:Array<any> = new Array<any>();
let recordsToUpdate:Array<any> = new Array<any>();
for (const record of records) {
if (record.Id) {
// There is an Id, so it's an update
recordsToUpdate.push(record);
}
else {
// No Id, insert record
recordsToInsert.push(record);
}
}

// Checking if a batch size is specified
const batchSize = batchSizeMap.get(dataFileName) ? batchSizeMap.get(dataFileName) : 200;
for (var i = 0; i < records.length; i += batchSize) {
// @ts-ignore: Don't know why, but TypeScript doesn't use the correct method override
const chunkResults: RecordResult[] = await conn.sobject(sobjectName).insert(records.slice(i, i + batchSize), { allowRecursive: true, allOrNone: this.flags.allornone })
.catch(err => {
if (this.flags.ignoreerrors) {
this.ux.log(`Error importing records: ${err}`);
}
else {
throw new SfdxError(`Error importing records: ${err}`);
}
});
sobjectsResult.push(...chunkResults);
// UPDATING RECORDS
if (recordsToUpdate.length > 0) {
this.debug(`DEBUG updating ${sobjectName} records`);

// Checking if a batch size is specified
const batchSize = batchSizeMap.get(dataFileName) ? batchSizeMap.get(dataFileName) : 200;
for (var i = 0; i < recordsToUpdate.length; i += batchSize) {
// @ts-ignore: Don't know why, but TypeScript doesn't use the correct method override
const chunkResults: RecordResult[] = await conn.sobject(sobjectName).update(recordsToUpdate.slice(i, i + batchSize), { allowRecursive: true, allOrNone: this.flags.allornone })
.catch(err => {
if (this.flags.ignoreerrors) {
this.ux.log(`Error importing records: ${err}`);
}
else {
throw new SfdxError(`Error importing records: ${err}`);
}
});
sobjectsResult.push(...chunkResults);
}
}

// INSERTING RECORDS
if (recordsToInsert.length > 0) {
// No Id, insert
this.debug(`DEBUG inserting ${sobjectName} records`);

// Checking if a batch size is specified
const batchSize = batchSizeMap.get(dataFileName) ? batchSizeMap.get(dataFileName) : 200;
for (var i = 0; i < recordsToInsert.length; i += batchSize) {
// @ts-ignore: Don't know why, but TypeScript doesn't use the correct method override
const chunkResults: RecordResult[] = await conn.sobject(sobjectName).insert(recordsToInsert.slice(i, i + batchSize), { allowRecursive: true, allOrNone: this.flags.allornone })
.catch(err => {
if (this.flags.ignoreerrors) {
this.ux.log(`Error importing records: ${err}`);
}
else {
throw new SfdxError(`Error importing records: ${err}`);
}
});
sobjectsResult.push(...chunkResults);
}
}
}
}

// Some errors are part of RecordResult but don't throw an exception
for (let i = 0; i < sobjectsResult.length; i++) {

Expand Down
Loading

0 comments on commit 5366df6

Please sign in to comment.