Mercurial > code > home > repos > gcalendarwatch
diff calsync/event_sync.go @ 52:5f7c393577e9
now gets sync updates (for 30 sec)
author | drewp@bigasterisk.com |
---|---|
date | Mon, 19 Aug 2024 19:19:13 -0700 |
parents | a9b720445bcf |
children | 3a12a3ac9164 |
line wrap: on
line diff
--- a/calsync/event_sync.go Mon Aug 19 14:42:27 2024 -0700 +++ b/calsync/event_sync.go Mon Aug 19 19:19:13 2024 -0700 @@ -9,19 +9,44 @@ "bigasterisk.com/go/gcalendarwatch/mongoclient" ) +// Runs forever. func updateMongoEventsToMatchGoogle( mc *mongoclient.MongoClient, gc *gcalclient.GCalClient) error { t := time.Now() - events, err := gc.FindEvents(mc, t, 3) - if err != nil { - return err + eventUpdates := make(chan *gcalclient.FindEventsMessage) + + go updateRoutine(eventUpdates, gc, mc) + + for ev := range eventUpdates { + if ev.Event != nil { + mc.UpsertOneEvent( + convert.MongoEventFromGoogleEvent2( + ev.Event.CalendarUrl, + ev.Event, + /*modSince=*/ t, + ), + ) + } else { + log.Println("cal", ev.CalId, "ready for cleanup - todo") + log.Println("t=", t) + mc.DeleteEventsUpdatedBefore(t) + } } - log.Println("upserting", len(events), "events") - for _, ev := range events { - mc.UpsertOneEvent( - convert.MongoEventFromGoogleEvent2(ev.CalendarUrl, ev, t), - ) - } - mc.DeleteEventsUpdatedBefore(t) return nil } + +func updateRoutine( + eventUpdates chan *gcalclient.FindEventsMessage, + gc *gcalclient.GCalClient, + mc *mongoclient.MongoClient, +) { + defer close(eventUpdates) + + t := time.Now() + err := gc.FindEvents(mc, t.AddDate(0, 0, -3), t.AddDate(0, 0, 7), eventUpdates) + if err != nil { + log.Println(err) + return + } + log.Println("updateRoutine done") +}