Allow editing time entry start and end in TUI and web.
Duration is derived from the range so timer sessions can be corrected after the fact. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -63,8 +63,10 @@ func (s *Server) handleUpdateTime(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
var body struct {
|
||||
Duration int64 `json:"durationNs"`
|
||||
Note string `json:"note"`
|
||||
Start *time.Time `json:"start"`
|
||||
End *time.Time `json:"end"`
|
||||
Duration int64 `json:"durationNs"`
|
||||
Note string `json:"note"`
|
||||
}
|
||||
if err := readJSON(r, &body); err != nil {
|
||||
writeError(w, http.StatusBadRequest, "invalid json")
|
||||
@@ -86,8 +88,21 @@ func (s *Server) handleUpdateTime(w http.ResponseWriter, r *http.Request) {
|
||||
writeError(w, http.StatusNotFound, "not found")
|
||||
return
|
||||
}
|
||||
if body.Duration > 0 {
|
||||
if body.Start != nil || body.End != nil {
|
||||
if body.Start != nil {
|
||||
found.Start = body.Start.UTC()
|
||||
}
|
||||
if body.End != nil {
|
||||
found.End = body.End.UTC()
|
||||
}
|
||||
if !found.End.After(found.Start) {
|
||||
writeError(w, http.StatusBadRequest, "end must be after start")
|
||||
return
|
||||
}
|
||||
found.Duration = found.End.Sub(found.Start)
|
||||
} else if body.Duration > 0 {
|
||||
found.Duration = time.Duration(body.Duration)
|
||||
found.End = found.Start.Add(found.Duration)
|
||||
}
|
||||
found.Note = body.Note
|
||||
if err := s.Times.Update(*found); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user