view calsync/cal_sync.go @ 56:635ff76f867c

WIP: rewrite: process load+sync in parallel between cals; simplify a lot
author drewp@bigasterisk.com
date Thu, 05 Sep 2024 13:50:40 -0700
parents a9b720445bcf
children 3b0595c2bf03
line wrap: on
line source

package main

import (
	"log"

	"bigasterisk.com/go/gcalendarwatch/convert"
	"bigasterisk.com/go/gcalendarwatch/gcalclient"
	"bigasterisk.com/go/gcalendarwatch/mongoclient"
)

func updateMongoCalsToMatchGoogleOnce(mc *mongoclient.MongoClient, gc *gcalclient.GCalClient) (err error) {
	log.Println("updateMongoCalsToMatchGoogle")

	seen := make(map[string]bool)

	cals, err := gc.AllCalendars()
	if err != nil {
		return err
	}

	for _, cal := range cals {
		calUrl := gcalclient.MakeCalUrl(cal.Id)
		log.Println("syncing", calUrl)
		seen[calUrl] = true
		err = mc.UpsertOneCal(convert.MongoCalFromGoogleCal(cal))
		if err != nil {
			return err
		}
		log.Println("syncing", calUrl, "done")
	}

	err = mc.DeleteCalsNotInSet(seen)

	log.Println("updateMongoCalsToMatchGoogle done")
	return err
}