fix: motorcycle in backroom is broken #736

Merged
Sainan merged 2 commits from motorcycle-fix into main 2025-01-05 20:35:11 -08:00

View File

@ -2,11 +2,23 @@ import { RequestHandler } from "express";
import { getAccountIdForRequest } from "@/src/services/loginService";
import { getPersonalRooms } from "@/src/services/personalRoomsService";
import { TBootLocation } from "@/src/types/shipTypes";
import { getInventory } from "@/src/services/inventoryService";
export const setBootLocationController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req);
const personalRooms = await getPersonalRooms(accountId);
personalRooms.Ship.BootLocation = req.query.bootLocation as string as TBootLocation;
await personalRooms.save();
if (personalRooms.Ship.BootLocation == "SHOP") {
// Temp fix so the motorcycle in the backroom doesn't appear broken.
// This code may be removed when quests are fully implemented.
const inventory = await getInventory(accountId);
if (inventory.Motorcycles.length == 0) {
inventory.Motorcycles.push({ ItemType: "/Lotus/Types/Vehicles/Motorcycle/MotorcyclePowerSuit" });
await inventory.save();
}
}
coderabbitai[bot] commented 2025-01-05 18:43:19 -08:00 (Migrated from github.com)
Review

🛠️ Refactor suggestion

Add error handling and avoid potential race conditions.
While the code ensures that a motorcycle is added when none exists, there are scenarios to consider:

  1. getInventory() might fail due to network or database issues; adding error handling (try/catch) secures against possible exceptions.
  2. Multiple concurrent requests could simultaneously detect an empty inventory; adding locks, transactions, or concurrency checks can help ensure consistency.
  3. This temporary fix (annotated in lines 14-15) may linger and create tech debt. Consider adding a TODO reference and a ticket number in your project management tool for better visibility.

Would you like help drafting concurrent-safe logic or adding a robust error-handling block to ensure data integrity?

_:hammer_and_wrench: Refactor suggestion_ **Add error handling and avoid potential race conditions.** While the code ensures that a motorcycle is added when none exists, there are scenarios to consider: 1. `getInventory()` might fail due to network or database issues; adding error handling (try/catch) secures against possible exceptions. 2. Multiple concurrent requests could simultaneously detect an empty inventory; adding locks, transactions, or concurrency checks can help ensure consistency. 3. This temporary fix (annotated in lines 14-15) may linger and create tech debt. Consider adding a TODO reference and a ticket number in your project management tool for better visibility. Would you like help drafting concurrent-safe logic or adding a robust error-handling block to ensure data integrity? <!-- This is an auto-generated comment by CodeRabbit -->
res.end();
};