Diciamo che ho i seguenti appuntamenti:
Appointment 1 = 1:00
Appointment 2 = 2:00
Appointment 3 = 3:00
Appointment 4 = 4:00
Ho bisogno di riprogrammare tutte queste un'ora dopo:
Appointment 1 = 2:00
Appointment 2 = 3:00
Appointment 3 = 4:00
Appointment 4 = 5:00
Il problema è che voglio farlo in una sola operazione atomica, ma i tempi degli appuntamenti devono essere unici. Se li gestisco in ordine, allora avrò un errore. Non riesco a pianificare l'appuntamento 1 alle 2:00, perché 2:00 non è un orario aperto. È occupato da Appointment 2.
Gli orari sono memorizzati in una tabella molto semplicemente:
AppointmentId: number,
AppointmentTime: datetime
C'è un vincolo univoco su AppointmentTime.
Preferirei non dover annullare prima tutti gli appuntamenti. Questo è probabilmente quello che finirò per fare, ma sto cercando di evitarlo.
La soluzione semplice è di farlo in ordine inverso. Ma questo è un caso semplice che è ordinatamente ordinato. Le probabilità sono, i dati non sarebbero sequenziali. C'è un modello o un algoritmo che si occupa di questo genere di cose? Trovare la sequenza ottimale per eseguire un'operazione su un elenco di oggetti?
C'è anche il caso in cui voglio pianificare i miei appuntamenti con orari esistenti:
Appointment 1 = 4:00
Appointment 2 = 2:00
Appointment 3 = 3:00
Appointment 4 = 1:00
Non c'è modo di calcolare un ordine che funzionerà qui. È circolare. Ecco perché probabilmente finirò per rinviare tutto. Ma sono ancora interessato a cercare di determinare il percorso ottimale.
Lo sto facendo su Node usando MongoDB.
Qualcuno ha qualche suggerimento?