view calsync/mongoclient/events_collection.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 6c7151126a0b
line wrap: on
line source

package mongoclient

import (
	"log"
	"time"

	"go.mongodb.org/mongo-driver/bson"
	"go.mongodb.org/mongo-driver/mongo/options"
)

func LogWithCal(cal MongoCal, msg ...interface{}) {
	log.Println("cal:", (cal.GoogleId+"........")[:8], msg)
}

func (c *MongoClient) UpsertOneEvent(ev MongoEvent) error {
	filter := bson.M{"_id": ev.Url}
	setFields := ev
	update := bson.M{"$set": setFields}
	_, err := c.eventsCollection.UpdateOne(c.ctx, filter, update, options.Update().SetUpsert(true))
	if err != nil {
		return err
	}
	return nil
}

func (c *MongoClient) DeleteEventsUpdatedBefore(cal MongoCal, t time.Time) error {
	res, err := c.eventsCollection.DeleteMany(
		c.ctx,
		bson.M{"calendarUrl": cal.Url,
			"lastUpdated": bson.M{"$lt": t}})
	LogWithCal(cal, "deleted", res.DeletedCount, "events updated before", t)
	if err != nil {
		return err
	}
	return nil
}