Move item to another order

This commit is contained in:
2026-01-04 22:14:28 +03:00
parent 74e7dc8fd5
commit 91f18a6a9a

View File

@@ -594,7 +594,7 @@ export default class DBAdapter {
}
const item = await connection.query(
'SELECT id, order_id FROM order_items WHERE id = ? FOR UPDATE',
'SELECT id, order_id, product_id, quantity FROM order_items WHERE id = ? FOR UPDATE',
[itemId]
);
@@ -608,11 +608,35 @@ export default class DBAdapter {
});
}
await connection.query(
'UPDATE order_items SET order_id = ? WHERE id = ?',
[targetOrderId, itemId]
if (itemRow.order_id === targetOrderId) {
await connection.rollback();
connection.release();
return;
}
const targetItem = await connection.query(
'SELECT id, quantity FROM order_items WHERE order_id = ? AND product_id = ? FOR UPDATE',
[targetOrderId, itemRow.product_id]
);
const targetItemRow = targetItem?.[0];
if (targetItemRow) {
await connection.query(
'UPDATE order_items SET quantity = ? WHERE id = ?',
[targetItemRow.quantity + itemRow.quantity, targetItemRow.id]
);
await connection.query(
'DELETE FROM order_items WHERE id = ?',
[itemId]
);
} else {
await connection.query(
'UPDATE order_items SET order_id = ? WHERE id = ?',
[targetOrderId, itemId]
);
}
await connection.commit();
connection.release();
@@ -633,4 +657,4 @@ export default class DBAdapter {
});
}
}
}
}