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
|
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