Make device row moves atomic

This commit is contained in:
2026-07-23 18:52:40 +02:00
parent a6837d7242
commit cf356bbedc
7 changed files with 440 additions and 247 deletions
@@ -45,10 +45,31 @@ export interface CreateCircuitWithDeviceRowsTransactionInput {
deviceRows: Array<Omit<CreateCircuitDeviceRowTransactionInput, "circuitId">>;
}
export interface MoveCircuitDeviceRowsTransactionInput {
rows: Array<{ id: string; expectedCircuitId: string }>;
targetCircuitId?: string;
createTargetCircuit?: {
circuitListId: string;
sectionId: string;
equipmentIdentifier: string;
displayName: string;
sortOrder: number;
};
}
export interface MoveCircuitDeviceRowsTransactionResult {
movedRowIds: string[];
targetCircuitId: string;
createdCircuitId?: string;
}
export interface CircuitDeviceRowTransactionStore {
createInCircuit(input: CreateCircuitDeviceRowTransactionInput): string;
createCircuitWithDeviceRows(
input: CreateCircuitWithDeviceRowsTransactionInput
): { circuitId: string; rowIds: string[] };
deleteFromCircuit(rowId: string, expectedCircuitId: string): void;
moveRows(
input: MoveCircuitDeviceRowsTransactionInput
): MoveCircuitDeviceRowsTransactionResult;
}
+2 -2
View File
@@ -334,7 +334,7 @@ export class CircuitWriteService {
return this.deviceRowRepository.findById(rowId);
}
this.deviceRowRepository.moveRowsTransactional({
this.getDeviceRowTransactionStore().moveRows({
rows: [{ id: row.id, expectedCircuitId: row.circuitId }],
targetCircuitId: targetCircuit?.id,
createTargetCircuit,
@@ -415,7 +415,7 @@ export class CircuitWriteService {
}
}
return this.deviceRowRepository.moveRowsTransactional({
return this.getDeviceRowTransactionStore().moveRows({
rows: rows.map((row) => ({ id: row.id, expectedCircuitId: row.circuitId })),
targetCircuitId: targetCircuit?.id,
createTargetCircuit,