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")
+}