diff calsync/mongoclient/events_collection.go @ 50:dade5bbd02e3

refactor
author drewp@bigasterisk.com
date Mon, 19 Aug 2024 13:37:05 -0700
parents
children a9b720445bcf
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calsync/mongoclient/events_collection.go	Mon Aug 19 13:37:05 2024 -0700
@@ -0,0 +1,57 @@
+package mongoclient
+
+import (
+	"log"
+
+	"go.mongodb.org/mongo-driver/bson"
+	"go.mongodb.org/mongo-driver/mongo/options"
+)
+
+func (c *MongoClient) UpsertOneEvent(ev MongoEvent) error {
+	filter := bson.M{"_id": ev.Url}
+	setFields := bson.M{
+		"googleId":    ev.GoogleId,
+		"lastUpdated": ev.LastUpdated,
+		"htmlLink":    ev.HtmlLink,
+		"title":       ev.Title,
+	}
+	update := bson.M{"$set": setFields}
+	_, err := c.eventsCollection.UpdateOne(c.ctx, filter, update, options.Update().SetUpsert(true))
+	if err != nil {
+		return err
+	}
+	log.Println("  mongo upserted", ev.Url)
+	return nil
+}
+
+// func (c *MongoClient) FindEventsIntersecting(t1, t2 time.Time) ([]MongoEvent, error) {
+// 	cur, err := c.eventsCollection.Find(c.ctx, bson.M{
+// 		"end":   bson.M{"$gte": t1},
+// 		"start": bson.M{"$lte": t2},
+// 	}) // todo: allday evs
+// 	if err != nil {
+// 		return nil, err
+// 	}
+// 	defer cur.Close(c.ctx)
+
+// 	var events []MongoEvent
+// 	for cur.Next(c.ctx) {
+// 		var ev MongoEvent
+// 		if err := cur.Decode(&ev); err != nil {
+// 			return nil, err
+// 		}
+// 		events = append(events, ev)
+// 	}
+// 	return events, nil
+// }
+
+// func (c *MongoClient) CurrentEvents(now time.Time) ([]MongoEvent, error) {
+// 	return c.FindEventsIntersecting(now, now)
+// }
+// func (c *MongoClient) UpdateOrInsertEvent(ev MongoEvent) error {
+// 	return errors.New("todo")
+// }
+
+// func (c *MongoClient) DeleteEvent(ev MongoEvent) error {
+// 	return errors.New("todo")
+// }