changeset - delete

This commit is contained in:
Jan Prochazka
2020-03-29 12:29:02 +02:00
parent 2107daf0f0
commit 50bf392e4a
3 changed files with 95 additions and 27 deletions

View File

@@ -51,15 +51,23 @@ export function findExistingChangeSetItem(
),
];
} else {
return [
'updates',
changeSet.updates.find(
x =>
x.pureName == definition.pureName &&
x.schemaName == definition.schemaName &&
_.isEqual(x.condition, definition.condition)
),
];
const inUpdates = changeSet.updates.find(
x =>
x.pureName == definition.pureName &&
x.schemaName == definition.schemaName &&
_.isEqual(x.condition, definition.condition)
);
if (inUpdates) return ['updates', inUpdates];
const inDeletes = changeSet.deletes.find(
x =>
x.pureName == definition.pureName &&
x.schemaName == definition.schemaName &&
_.isEqual(x.condition, definition.condition)
);
if (inDeletes) return ['deletes', inDeletes];
return ['updates', null];
}
}
@@ -68,7 +76,11 @@ export function setChangeSetValue(
definition: ChangeSetFieldDefinition,
value: string
): ChangeSet {
const [fieldName, existingItem] = findExistingChangeSetItem(changeSet, definition);
let [fieldName, existingItem] = findExistingChangeSetItem(changeSet, definition);
if (fieldName == 'deletes') {
changeSet = revertChangeSetRowChanges(changeSet, definition);
[fieldName, existingItem] = findExistingChangeSetItem(changeSet, definition);
}
if (existingItem) {
return {
...changeSet,
@@ -191,6 +203,30 @@ export function revertChangeSetRowChanges(changeSet: ChangeSet, definition: Chan
return changeSet;
}
export function deleteChangeSetRows(changeSet: ChangeSet, definition: ChangeSetRowDefinition): ChangeSet {
let [fieldName, existingItem] = findExistingChangeSetItem(changeSet, definition);
if (fieldName == 'updates') {
changeSet = revertChangeSetRowChanges(changeSet, definition);
[fieldName, existingItem] = findExistingChangeSetItem(changeSet, definition);
}
if (fieldName == 'inserts') {
return revertChangeSetRowChanges(changeSet, definition);
} else {
if (existingItem && fieldName == 'deletes') return changeSet;
return {
...changeSet,
deletes: [
...changeSet.deletes,
{
pureName: definition.pureName,
schemaName: definition.schemaName,
condition: definition.condition,
},
],
};
}
}
export function getChangeSetInsertedRows(changeSet: ChangeSet, name?: NamedObjectInfo) {
if (!name) return [];
if (!changeSet) return [];