fix: fix reordering failure issue
This commit is contained in:
parent
7f2bd8bb82
commit
75e667c1d7
|
|
@ -82,6 +82,23 @@ export async function reorderSteps(
|
||||||
category: StepCategory,
|
category: StepCategory,
|
||||||
orderedIds: number[]
|
orderedIds: number[]
|
||||||
) {
|
) {
|
||||||
|
// Two-phase update to avoid unique constraint violations
|
||||||
|
// Phase 1: Move all steps to temporary high values (offset by 10000)
|
||||||
|
for (let i = 0; i < orderedIds.length; i++) {
|
||||||
|
await db.update(stepTemplates)
|
||||||
|
.set({ orderIndex: i + 10000 })
|
||||||
|
.where(eq(stepTemplates.id, orderedIds[i]));
|
||||||
|
|
||||||
|
// Also update customer steps
|
||||||
|
await db.update(customerSteps)
|
||||||
|
.set({ orderIndex: i + 10000 })
|
||||||
|
.where(and(
|
||||||
|
eq(customerSteps.templateId, orderedIds[i]),
|
||||||
|
eq(customerSteps.category, category)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Phase 2: Move to final positions
|
||||||
for (let i = 0; i < orderedIds.length; i++) {
|
for (let i = 0; i < orderedIds.length; i++) {
|
||||||
await db.update(stepTemplates)
|
await db.update(stepTemplates)
|
||||||
.set({ orderIndex: i })
|
.set({ orderIndex: i })
|
||||||
|
|
@ -95,6 +112,7 @@ export async function reorderSteps(
|
||||||
eq(customerSteps.category, category)
|
eq(customerSteps.category, category)
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
revalidatePath(`/releases/${releaseId}/steps`);
|
revalidatePath(`/releases/${releaseId}/steps`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue