Optimierung der Verfügbarkeitsprüfung für ein BuchungssystemJavaScript

Javascript-Forum
Guest
 Optimierung der Verfügbarkeitsprüfung für ein Buchungssystem

Post by Guest »

Ich arbeite an einem Ressourcenbuchungssystem und benötige Ratschläge zur Optimierung meiner Logik zur Überprüfung der Ressourcenverfügbarkeit. Die aktuelle Implementierung funktioniert, fühlt sich aber ineffizient an, da sie unnötige Prüfungen durchführt.
Hier ist das Szenario:
  • Ich habe eine Liste von Ressourcen (z. B. Geräte, Räume oder andere buchbare Elemente), die in der Ressourcenliste gespeichert sind.
  • Jede Ressource kann mehrere Buchungen haben, die in einer Buchungsliste gespeichert sind.< /li>
    Wenn eine Buchungsanfrage eingeht, Ich muss prüfen, ob sich die angeforderten Daten mit vorhandenen Buchungen für diese Ressource überschneiden. Wenn die Ressource verfügbar ist, füge ich sie der Liste der bestätigten Buchungen hinzu. Jede Buchung hat ein Startdatum und ein Enddatum.
Hier ist mein aktueller Code:

Code: Select all

// Sample resource list
const resourceList = [
{ resourceId: "R1", status: "Available" },
{ resourceId: "R2", status: "Booked" },
{ resourceId: "R3", status: "Booked" }
];

// Sample booking list
const bookingList = [
{ resourceId: "R2", startDate: "2025-01-10", endDate: "2025-01-15" },
{ resourceId: "R2", startDate: "2025-01-20", endDate: "2025-01-25" },
{ resourceId: "R3", startDate: "2025-01-12", endDate: "2025-01-18" }
];

// Requested dates
const startDate = new Date("2025-01-15");
const endDate = new Date("2025-01-19");

let availableResources = [];
let newBookings = [];
const requiredResources = 1; // Example: Only need 1 resource

for (let resource of resourceList) {
if (resource.status === "Booked") {
const resourceBookings = bookingList.filter(
booking => booking.resourceId === resource.resourceId
);

// Check if the resource is available for the requested dates
const isAvailable = resourceBookings.every(booking => {
const existingStart = new Date(booking.startDate);
const existingEnd = new Date(booking.endDate);

return endDate < existingStart || startDate > existingEnd;
});

// Add resource if available and limit not met
if (isAvailable && availableResources.length < requiredResources) {
availableResources.push(resource.resourceId);
newBookings.push({
resourceId: resource.resourceId,
startDate: startDate.toISOString().split("T")[0],
endDate: endDate.toISOString().split("T")[0]
});
}
}
}

Meine Bedenken:
  • Unnötige Kontrollen: Ich habe das Gefühl, dass ich nicht jede Buchung überprüfen sollte sein und es gibt eine bessere und effizientere Möglichkeit, nur eine Teilmenge der Buchung zu überprüfen?
  • Leistungsprobleme: Da die Anzahl der Ressourcen und Buchungen wächst, Dieser Ansatz lässt sich möglicherweise nicht gut skalieren.
Wenn Sie ein ähnliches Problem angegangen sind oder Ideen haben, würde ich mich freuen, sie zu hören!
Vielen Dank im Voraus für Ihre Vorschläge.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post