added edit and delete event functions

This commit is contained in:
steven carpenter 2025-07-27 16:18:54 -04:00
parent 719cb62c31
commit abb85650c8

View file

@ -119,3 +119,76 @@ func GetEventsForDay(year,month,day int32) ([]*calendar.Event,error) {
})
return events,err
}
func EditEvent(originalYear, originalMonth, originalDay, originalStartHour int32, updated EventInput) error {
if db == nil {
err := fmt.Errorf("badger DB is not initialized")
logger.Log.Error(err)
return err
}
// Reject changes to key-defining fields
if updated.Year != originalYear ||
updated.Month != originalMonth ||
updated.Day != originalDay ||
updated.StartHour != originalStartHour {
err := fmt.Errorf("editing key-defining fields (year, month, day, startHour) is not allowed; delete and recreate instead")
logger.Log.Error(err)
return err
}
key := fmt.Appendf(nil, "events/%04d-%02d-%02d/%02d", originalYear, originalMonth, originalDay, originalStartHour)
event := &calendar.Event{
Title: updated.Title,
Description: updated.Description,
Year: originalYear,
Month: originalMonth,
Day: originalDay,
StartHour: originalStartHour,
EndHour: updated.EndHour,
Color: updated.Color,
}
data, err := proto.Marshal(event)
if err != nil {
err = fmt.Errorf("failed to marshal updated event: %w", err)
logger.Log.Error(err)
return err
}
err = db.Update(func(txn *badger.Txn) error {
return txn.Set(key, data)
})
if err != nil {
err = fmt.Errorf("failed to update event in DB: %w", err)
logger.Log.Error(err)
return err
}
return nil
}
func DeleteEvent(year, month, day, startHour int32) error {
if db == nil {
err := fmt.Errorf("badger DB is not initialized")
logger.Log.Error(err)
return err
}
key := fmt.Appendf(nil, "events/%04d-%02d-%02d/%02d", year, month, day, startHour)
err := db.Update(func(txn *badger.Txn) error {
return txn.Delete(key)
})
if err != nil {
err = fmt.Errorf("failed to delete event from DB: %w", err)
logger.Log.Error(err)
return err
}
return nil
}