diff --git a/app/routes/routes.js b/app/routes/routes.js index 6147afb..3c4ca6d 100644 --- a/app/routes/routes.js +++ b/app/routes/routes.js @@ -4,6 +4,9 @@ const jwt = require("jsonwebtoken"); const router = express.Router(); +const MAX_RETRIES = 3; +const RETRY_DELAY = 1000; // 1 second + router.get("/javascript/all-customers", (_, res) => { let sql = "SELECT * FROM customers"; @@ -54,14 +57,26 @@ router.get("/javascript/new-category", (_, res) => { }); router.put("/javascript/update-customer", (_, res) => { - let sql = "Update product set productName = 'Product 1' where productId = 55"; - - database.query(sql, (error, _) => { - if (error) throw error; - - res.status(200).send({ resp: "Data successfully Updated!" }); - console.log("success!"); - }); + const updateProduct = (retries) => { + let sql = "UPDATE product SET productName = 'Product 1' WHERE productId = 55"; + + database.query(sql, (error, result) => { + if (error) { + if (error.code === 'ER_LOCK_WAIT_TIMEOUT' && retries > 0) { + console.log(`Lock wait timeout, retrying... (${retries} attempts left)`); + setTimeout(() => updateProduct(retries - 1), RETRY_DELAY); + } else { + console.error("Database error:", error); + res.status(500).send({ error: "An error occurred while updating the product" }); + } + } else { + res.status(200).send({ resp: "Data successfully Updated!" }); + console.log("success!"); + } + }); + }; + + updateProduct(MAX_RETRIES); }); router.delete("/javascript/delete-salesorder", (_, res) => { diff --git a/app/src/Home.tsx b/app/src/Home.tsx index 2904543..9188e2a 100644 --- a/app/src/Home.tsx +++ b/app/src/Home.tsx @@ -234,19 +234,36 @@ function App() { languageSequence === "JavaScript, Go, Python, Java" && queryType === "JOIN" ) { - jsRouteWrapper(iterations, joinJSRoute, "JOIN"); - goRouteWrapper(iterations, joinGoRoute, "JOIN"); - pythonRouteWrapper(iterations, joinPythonRoute, "JOIN"); - javaRouteWrapper(iterations, joinJavaRoute, "JOIN") + jsRouteWrapper(iterations, joinJSRoute, "GET"); + goRouteWrapper(iterations, joinGoRoute, "GET"); + pythonRouteWrapper(iterations, joinPythonRoute, "GET"); + javaRouteWrapper(iterations, joinJavaRoute, "GET") } else if ( languageSequence === "JavaScript, Go, Python, Java" && queryType === "INSERT" ) { - jsRouteWrapper(iterations, insertJSRoute, "INSERT"); - goRouteWrapper(iterations, insertGoRoute, "INSERT"); - pythonRouteWrapper(iterations, joinPythonRoute, "INSERT"); - javaRouteWrapper(iterations, insertJavaRoute, "INSERT") + jsRouteWrapper(iterations, insertJSRoute, "POST"); + goRouteWrapper(iterations, insertGoRoute, "POST"); + pythonRouteWrapper(iterations, insertPythonRoute, "POST"); + javaRouteWrapper(iterations, insertJavaRoute, "POST") + + } else if ( + languageSequence === "JavaScript, Go, Python, Java" && + queryType === "UPDATE" + ) { + jsRouteWrapper(iterations, updateJSRoute, "PUT"); + goRouteWrapper(iterations, updateGoRoute, "PUT"); + pythonRouteWrapper(iterations, updatePythonRoute, "PUT"); + javaRouteWrapper(iterations, updateJavaRoute, "PUT") + } else if ( + languageSequence === "JavaScript, Go, Python, Java" && + queryType === "DELETE" + ) { + jsRouteWrapper(iterations, deleteJSRoute, "DELETE"); + goRouteWrapper(iterations, deleteGoRoute, "DELETE"); + pythonRouteWrapper(iterations, deletePythonRoute, "DELETE"); + javaRouteWrapper(iterations, deleteJavaRoute, "DELETE") } }; diff --git a/go-backend/api/models/database.go b/go-backend/api/models/database.go index dc3c63c..2c44eb0 100644 --- a/go-backend/api/models/database.go +++ b/go-backend/api/models/database.go @@ -9,7 +9,7 @@ import ( ) const dbuser = "root" -const dbpass = "password" +const dbpass = "Issaquah@411" const dbname = "northwind" type Shipper struct { @@ -23,7 +23,7 @@ type EmployeeId struct { } func GetShippers() []Shipper { - db, err := sql.Open("mysql", dbuser+":"+dbpass+"@tcp(192.168.81.153:3306)/"+dbname) + db, err := sql.Open("mysql", dbuser+":"+dbpass+"@tcp(127.0.0.1:3306)/"+dbname) if err != nil { fmt.Println("error", err.Error()) @@ -60,7 +60,7 @@ func GetShippers() []Shipper { } func GetCountNumId() []EmployeeId { - db, err := sql.Open("mysql", dbuser+":"+dbpass+"@tcp(192.168.81.153:3306)/"+dbname) + db, err := sql.Open("mysql", dbuser+":"+dbpass+"@tcp(127.0.0.1:3306)/"+dbname) if err != nil { fmt.Println("error", err.Error()) return nil @@ -95,7 +95,7 @@ func GetCountNumId() []EmployeeId { } func NewCategoryInsert() int64 { - db, err := sql.Open("mysql", dbuser+":"+dbpass+"@tcp(192.168.81.153:3306)/"+dbname) + db, err := sql.Open("mysql", dbuser+":"+dbpass+"@tcp(127.0.0.1:3306)/"+dbname) if err != nil { log.Fatal(err) @@ -120,7 +120,7 @@ func NewCategoryInsert() int64 { } func UpdateCustomer() int64 { - db, err := sql.Open("mysql", dbuser+":"+dbpass+"@tcp(192.168.81.153:3306)/"+dbname) + db, err := sql.Open("mysql", dbuser+":"+dbpass+"@tcp(127.0.0.1:3306)/"+dbname) if err != nil { log.Fatal(err) @@ -144,7 +144,7 @@ func UpdateCustomer() int64 { } func DeleteSalesOrder() int64 { - db, err := sql.Open("mysql", dbuser+":"+dbpass+"@tcp(192.168.81.153:3306)/"+dbname) + db, err := sql.Open("mysql", dbuser+":"+dbpass+"@tcp(127.0.0.1:3306)/"+dbname) if err != nil { log.Fatal(err) 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 bf83864..61b2a87 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 @@ -3,6 +3,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.lang.String; @@ -10,7 +12,6 @@ import org.springframework.web.bind.annotation.RequestMethod; @RestController -@CrossOrigin @RequestMapping public class FirstController { @@ -31,7 +32,8 @@ public List getEmployeeCountByRegion() { return employeeTerritoryService.countEmployeesByRegion(); } - @GetMapping("/java/category") + @PostMapping("/java/category") + @CrossOrigin(origins = "*", allowedHeaders = "*", allowCredentials = "false") public Category insertCategory() { return categoryService.insertAndSaveCategory(); } @@ -41,13 +43,16 @@ public List allShippers() { return shippers.findAll(); } - @RequestMapping(value = "/java/product", method = { RequestMethod.GET, RequestMethod.PUT }) + @PutMapping("/java/product") + @CrossOrigin(origins = "*", allowedHeaders = "*", allowCredentials = "false") public Product updateProductName() { return productService.updateProduct(); } @RequestMapping(value = "/java/delete-sales", method = { RequestMethod.DELETE }) + @CrossOrigin(origins = "*", allowedHeaders = "*", allowCredentials = "false") + public String deleteSales() { sales.deleteByOrderIdDescLimitOne(); return "1 Sales deleted";