mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-19 04:56:00 +00:00
editing changeset on archive file
This commit is contained in:
@@ -15,6 +15,7 @@ export interface ChangeSetItem {
|
||||
pureName: string;
|
||||
schemaName?: string;
|
||||
insertedRowIndex?: number;
|
||||
existingRowIndex?: number;
|
||||
document?: any;
|
||||
condition?: { [column: string]: string };
|
||||
fields?: { [column: string]: string };
|
||||
@@ -38,6 +39,7 @@ export interface ChangeSetRowDefinition {
|
||||
pureName: string;
|
||||
schemaName: string;
|
||||
insertedRowIndex?: number;
|
||||
existingRowIndex?: number;
|
||||
condition?: { [column: string]: string };
|
||||
}
|
||||
|
||||
@@ -66,7 +68,8 @@ export function findExistingChangeSetItem(
|
||||
x =>
|
||||
x.pureName == definition.pureName &&
|
||||
x.schemaName == definition.schemaName &&
|
||||
_.isEqual(x.condition, definition.condition)
|
||||
((definition.existingRowIndex != null && x.existingRowIndex == definition.existingRowIndex) ||
|
||||
(definition.existingRowIndex == null && _.isEqual(x.condition, definition.condition)))
|
||||
);
|
||||
if (inUpdates) return ['updates', inUpdates];
|
||||
|
||||
@@ -74,7 +77,8 @@ export function findExistingChangeSetItem(
|
||||
x =>
|
||||
x.pureName == definition.pureName &&
|
||||
x.schemaName == definition.schemaName &&
|
||||
_.isEqual(x.condition, definition.condition)
|
||||
((definition.existingRowIndex != null && x.existingRowIndex == definition.existingRowIndex) ||
|
||||
(definition.existingRowIndex == null && _.isEqual(x.condition, definition.condition)))
|
||||
);
|
||||
if (inDeletes) return ['deletes', inDeletes];
|
||||
|
||||
@@ -119,6 +123,7 @@ export function setChangeSetValue(
|
||||
schemaName: definition.schemaName,
|
||||
condition: definition.condition,
|
||||
insertedRowIndex: definition.insertedRowIndex,
|
||||
existingRowIndex: definition.existingRowIndex,
|
||||
fields: {
|
||||
[definition.uniqueName]: value,
|
||||
},
|
||||
@@ -162,6 +167,7 @@ export function setChangeSetRowData(
|
||||
schemaName: definition.schemaName,
|
||||
condition: definition.condition,
|
||||
insertedRowIndex: definition.insertedRowIndex,
|
||||
existingRowIndex: definition.existingRowIndex,
|
||||
document,
|
||||
},
|
||||
],
|
||||
@@ -395,6 +401,7 @@ export function deleteChangeSetRows(changeSet: ChangeSet, definition: ChangeSetR
|
||||
pureName: definition.pureName,
|
||||
schemaName: definition.schemaName,
|
||||
condition: definition.condition,
|
||||
existingRowIndex: definition.existingRowIndex,
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -402,9 +409,11 @@ export function deleteChangeSetRows(changeSet: ChangeSet, definition: ChangeSetR
|
||||
}
|
||||
|
||||
export function getChangeSetInsertedRows(changeSet: ChangeSet, name?: NamedObjectInfo) {
|
||||
if (!name) return [];
|
||||
// if (!name) return [];
|
||||
if (!changeSet) return [];
|
||||
const rows = changeSet.inserts.filter(x => x.pureName == name.pureName && x.schemaName == name.schemaName);
|
||||
const rows = changeSet.inserts.filter(
|
||||
x => name == null || (x.pureName == name.pureName && x.schemaName == name.schemaName)
|
||||
);
|
||||
const maxIndex = _.maxBy(rows, x => x.insertedRowIndex)?.insertedRowIndex;
|
||||
if (maxIndex == null) return [];
|
||||
const res = Array(maxIndex + 1).fill({});
|
||||
|
||||
@@ -460,30 +460,39 @@ export abstract class GridDisplay {
|
||||
return _.pick(row, this.changeSetKeyFields);
|
||||
}
|
||||
|
||||
getChangeSetField(row, uniqueName, insertedRowIndex): ChangeSetFieldDefinition {
|
||||
getChangeSetField(
|
||||
row,
|
||||
uniqueName,
|
||||
insertedRowIndex,
|
||||
existingRowIndex = null,
|
||||
baseNameOmitable = false
|
||||
): ChangeSetFieldDefinition {
|
||||
const col = this.columns.find(x => x.uniqueName == uniqueName);
|
||||
if (!col) return null;
|
||||
const baseObj = this.baseTableOrSimilar;
|
||||
if (!baseObj) return null;
|
||||
if (baseObj.pureName != col.pureName || baseObj.schemaName != col.schemaName) {
|
||||
return null;
|
||||
if (!baseNameOmitable) {
|
||||
if (!baseObj) return null;
|
||||
if (baseObj.pureName != col.pureName || baseObj.schemaName != col.schemaName) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
...this.getChangeSetRow(row, insertedRowIndex),
|
||||
...this.getChangeSetRow(row, insertedRowIndex, existingRowIndex, baseNameOmitable),
|
||||
uniqueName: uniqueName,
|
||||
columnName: col.columnName,
|
||||
};
|
||||
}
|
||||
|
||||
getChangeSetRow(row, insertedRowIndex): ChangeSetRowDefinition {
|
||||
getChangeSetRow(row, insertedRowIndex, existingRowIndex, baseNameOmitable = false): ChangeSetRowDefinition {
|
||||
const baseObj = this.baseTableOrSimilar;
|
||||
if (!baseObj) return null;
|
||||
if (!baseNameOmitable && !baseObj) return null;
|
||||
return {
|
||||
pureName: baseObj.pureName,
|
||||
schemaName: baseObj.schemaName,
|
||||
pureName: baseObj?.pureName,
|
||||
schemaName: baseObj?.schemaName,
|
||||
insertedRowIndex,
|
||||
condition: insertedRowIndex == null ? this.getChangeSetCondition(row) : null,
|
||||
existingRowIndex,
|
||||
condition: insertedRowIndex == null && existingRowIndex == null ? this.getChangeSetCondition(row) : null,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,8 @@ export class JslGridDisplay extends GridDisplay {
|
||||
setCache: ChangeCacheFunc,
|
||||
rows: any,
|
||||
isDynamicStructure: boolean,
|
||||
supportsReload: boolean
|
||||
supportsReload: boolean,
|
||||
editable: boolean = false
|
||||
) {
|
||||
super(config, setConfig, cache, setCache, null);
|
||||
|
||||
@@ -22,6 +23,7 @@ export class JslGridDisplay extends GridDisplay {
|
||||
this.supportsReload = supportsReload;
|
||||
this.isDynamicStructure = isDynamicStructure;
|
||||
this.filterTypeOverride = 'eval';
|
||||
this.editable = editable;
|
||||
|
||||
if (structure?.columns) {
|
||||
this.columns = _.uniqBy(
|
||||
|
||||
Reference in New Issue
Block a user