Mercurial > code > home > repos > gcalendarwatch
changeset 81:79320eff10f2
support status=="cancelled" to delete events
author | drewp@bigasterisk.com |
---|---|
date | Fri, 06 Sep 2024 18:26:13 -0700 |
parents | e8164bd2f9a1 |
children | 0f0b15d8062c |
files | calsync/gcalclient/gcalclient.go calsync/gcalclient/listevents.go calsync/mongoclient/events_collection.go calsync/sync_event.go |
diffstat | 4 files changed, 20 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- 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) {
--- 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,
--- 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,
--- 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