# HG changeset patch # User drewp@bigasterisk.com # Date 1725672373 25200 # Node ID 79320eff10f2b12a4c1d2bae38f0c356496bd470 # Parent e8164bd2f9a1807c4bf2d47eb6d662dbff6578c0 support status=="cancelled" to delete events diff -r e8164bd2f9a1 -r 79320eff10f2 calsync/gcalclient/gcalclient.go --- a/calsync/gcalclient/gcalclient.go Fri Sep 06 18:25:32 2024 -0700 +++ b/calsync/gcalclient/gcalclient.go Fri Sep 06 18:26:13 2024 -0700 @@ -48,7 +48,6 @@ } func (gc *GCalClient) Close() { - // todo: disconnect watches if possible } func (gc *GCalClient) AllCalendars() ([]*calendar.CalendarListEntry, error) { diff -r e8164bd2f9a1 -r 79320eff10f2 calsync/gcalclient/listevents.go --- a/calsync/gcalclient/listevents.go Fri Sep 06 18:25:32 2024 -0700 +++ b/calsync/gcalclient/listevents.go Fri Sep 06 18:26:13 2024 -0700 @@ -62,9 +62,6 @@ } for _, ev := range pageResult.Items { - if ev.Status == "cancelled" { - log.Fatal("todo") - } events = append(events, CalendarEvent{ Event: ev, CalendarUrl: cal.Url, diff -r e8164bd2f9a1 -r 79320eff10f2 calsync/mongoclient/events_collection.go --- a/calsync/mongoclient/events_collection.go Fri Sep 06 18:25:32 2024 -0700 +++ b/calsync/mongoclient/events_collection.go Fri Sep 06 18:26:13 2024 -0700 @@ -20,6 +20,15 @@ return nil } +func (c *MongoClient) DeleteEvent(evUrl string) error { + log.Println("deleting", evUrl) + _, err := c.eventsCollection.DeleteOne(c.ctx, bson.M{"_id": evUrl}) + if err != nil { + return err + } + return nil +} + func (c *MongoClient) DeleteEventsUpdatedBefore(cal M.MongoCal, t time.Time) error { res, err := c.eventsCollection.DeleteMany( c.ctx, diff -r e8164bd2f9a1 -r 79320eff10f2 calsync/sync_event.go --- a/calsync/sync_event.go Fri Sep 06 18:25:32 2024 -0700 +++ b/calsync/sync_event.go Fri Sep 06 18:26:13 2024 -0700 @@ -125,7 +125,7 @@ return err } r.syncToken = nextSyncToken - err = r.upsertEvents(events) + err = r.upsertAndDeleteEvents(events) if err != nil { return err } @@ -139,16 +139,23 @@ return fmt.Errorf("ListEventUpdates: %v", err) } r.syncToken = nextSyncToken - err = r.upsertEvents(events) + err = r.upsertAndDeleteEvents(events) if err != nil { - return fmt.Errorf("upsertEvents: %v", err) + return fmt.Errorf("upsertAndDeleteEvents: %v", err) } return nil } -func (r *calEventsReader) upsertEvents(events []gcalclient.CalendarEvent) error { +func (r *calEventsReader) upsertAndDeleteEvents(events []gcalclient.CalendarEvent) error { for _, ev := range events { + if ev.Status == "cancelled" { + err := r.mc.DeleteEvent(ev.EventUrl) + if err != nil { + return err + } + continue + } err := r.mc.UpsertOneEvent(convert.MongoEventFromGoogleEvent(&ev, time.Now() /*todo*/)) if err != nil { return err