From 6002984a7bb73440affacc4e1e402b7318291cba Mon Sep 17 00:00:00 2001 From: czhou578 Date: Mon, 15 Jul 2024 18:57:03 -0700 Subject: [PATCH] delete with transactions work for all languages --- app/routes/routes.js | 36 +++++++++---------- .../com/example/demo/FirstController.java | 7 +++- python-backend/main.py | 3 ++ 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/app/routes/routes.js b/app/routes/routes.js index f8c1559..439f74a 100644 --- a/app/routes/routes.js +++ b/app/routes/routes.js @@ -153,29 +153,27 @@ router.put("/javascript/update-customer", (_, res) => { }); router.delete("/javascript/delete-salesorder", (_, res) => { - const deleteSalesOrder = (retries) => { - let sql = "delete from salesorder order by orderId desc limit 1"; - let start = performance.now(); + const deleteOrder = async () => { + try { + let start = performance.now(); - database.query(sql, (error, _) => { - if (error) { - if (error.code === 'ER_LOCK_WAIT_TIMEOUT' && retries > 0) { - console.log(`Lock wait timeout, retrying... (${retries} attempts left)`); - setTimeout(() => deleteSalesOrder(retries - 1), RETRY_DELAY) - } else { - console.error("Database error:", error); - res.status(500).send({ error: "An error occurred while updating the product" }) - } - } else { - let end = performance.now(); + let sql = "delete from salesorder order by orderId desc limit 1"; - res.status(200).send({ resp: "Data successfully deleted!", "Operation Completion Time (ms)": end - start }) - } - }); + await database.beginTransaction() + await database.query(sql) + await database.commit() + console.log("Transaction committed successfully. Records deleted."); + let end = performance.now(); + res.status(200).send({ resp: "Data successfully deleted!", "Operation Completion Time (ms)": end - start }) + + } catch (error) { + console.error(`Error: ${error.message}`); + } } - deleteSalesOrder(3) -}); + deleteOrder() +}) + module.exports = router; diff --git a/java-backend/demo/src/main/java/com/example/demo/FirstController.java b/java-backend/demo/src/main/java/com/example/demo/FirstController.java index 5066e5a..0babf42 100644 --- a/java-backend/demo/src/main/java/com/example/demo/FirstController.java +++ b/java-backend/demo/src/main/java/com/example/demo/FirstController.java @@ -7,6 +7,9 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; +import java.util.HashMap; import java.util.List; import java.lang.String; import org.springframework.web.bind.annotation.RequestMapping; @@ -60,7 +63,9 @@ public Product updateProductName() { public ResponseEntity deleteSales() { try { salesService.deleteLastSalesOrderWithRetry(); - return ResponseEntity.ok().body("Last sales order deleted!"); + Map response = new HashMap<>(); + response.put("message", "Last sales order deleted!"); + return ResponseEntity.ok().body(response); } catch (Exception e) { return ResponseEntity.internalServerError().body("Error deleting last sales"); } diff --git a/python-backend/main.py b/python-backend/main.py index 26d829b..30d95d8 100644 --- a/python-backend/main.py +++ b/python-backend/main.py @@ -130,9 +130,12 @@ def deleteSalesorder(): iterations = request.args.get('iteration') + mydb.start_transaction() for x in range(int(iterations)): data = executeDelete() + + mydb.commit() end_time = time.perf_counter() elapsed_time = end_time - start_time