Move item to another order
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user