added edit and delete event functions
This commit is contained in:
parent
719cb62c31
commit
abb85650c8
1 changed files with 73 additions and 0 deletions
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue