changeset 50:dade5bbd02e3

refactor
author drewp@bigasterisk.com
date Mon, 19 Aug 2024 13:37:05 -0700
parents 2991c1166852
children a9b720445bcf
files calsync/mongoclient/cals_collection.go calsync/mongoclient/events_collection.go calsync/mongoclient/mongoclient.go
diffstat 3 files changed, 137 insertions(+), 126 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calsync/mongoclient/cals_collection.go	Mon Aug 19 13:37:05 2024 -0700
@@ -0,0 +1,80 @@
+package mongoclient
+
+import (
+	"log"
+
+	"go.mongodb.org/mongo-driver/bson"
+	"go.mongodb.org/mongo-driver/mongo/options"
+)
+
+// docs in calsCollection
+type MongoCal struct {
+	Url         string `bson:"_id"` // bigasterisk.com/...
+	GoogleId    string `bson:"googleId"`
+	Summary     string `bson:"summary"`
+	Description string `bson:"description"`
+}
+
+func (c *MongoClient) GetAllCals() ([]MongoCal, error) {
+	cur, err := c.calsCollection.Find(c.ctx, bson.D{})
+	if err != nil {
+		return nil, err
+	}
+	defer cur.Close(c.ctx)
+
+	var cals []MongoCal
+	for cur.Next(c.ctx) {
+		var cal MongoCal
+		if err := cur.Decode(&cal); err != nil {
+			return nil, err
+		}
+		cals = append(cals, cal)
+	}
+	return cals, nil
+}
+
+func (c *MongoClient) GetOneCal(calId string) (MongoCal, error) {
+	res := c.calsCollection.FindOne(c.ctx, bson.M{"_id": calId})
+	var cal MongoCal
+	err := res.Decode(&cal)
+	return cal, err
+}
+
+func (c *MongoClient) UpsertOneCal(cal MongoCal) error {
+	filter := bson.M{"_id": cal.Url}
+	update := bson.M{"$set": cal}
+	_, err := c.calsCollection.UpdateOne(c.ctx, filter, update,
+		options.Update().SetUpsert(true))
+	if err != nil {
+		return err
+	}
+	return nil
+}
+
+func (c *MongoClient) DeleteCalsNotInSet(urlsToKeep map[string]bool) error {
+	curs, err := c.calsCollection.Find(c.ctx, bson.M{})
+	if err != nil {
+		return err
+	}
+	defer curs.Close(c.ctx)
+
+	for curs.Next(c.ctx) {
+		var doc bson.M
+		err = curs.Decode(&doc)
+		if err != nil {
+			return err
+		}
+		calUrl, ok := doc["_id"].(string)
+		if !ok {
+			continue
+		}
+		if !urlsToKeep[calUrl] {
+			log.Println("  cleaning up", calUrl)
+			_, err = c.calsCollection.DeleteOne(c.ctx, bson.M{"_id": doc["_id"]})
+			if err != nil {
+				return err
+			}
+		}
+	}
+	return curs.Err()
+}
--- /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")
+// }
--- a/calsync/mongoclient/mongoclient.go	Mon Aug 19 13:25:03 2024 -0700
+++ b/calsync/mongoclient/mongoclient.go	Mon Aug 19 13:37:05 2024 -0700
@@ -18,13 +18,6 @@
 	eventsCollection *mongo.Collection
 }
 
-// docs in calsCollection
-type MongoCal struct {
-	Url         string `bson:"_id"` // bigasterisk.com/...
-	GoogleId    string `bson:"googleId"`
-	Summary     string `bson:"summary"`
-	Description string `bson:"description"`
-}
 
 // docs in eventsCollection
 type MongoEvent struct {
@@ -79,122 +72,3 @@
 func (c *MongoClient) Close() {
 	c.client.Disconnect(c.ctx)
 }
-
-func (c *MongoClient) GetAllCals() ([]MongoCal, error) {
-	cur, err := c.calsCollection.Find(c.ctx, bson.D{})
-	if err != nil {
-		return nil, err
-	}
-	defer cur.Close(c.ctx)
-
-	var cals []MongoCal
-	for cur.Next(c.ctx) {
-		var cal MongoCal
-		if err := cur.Decode(&cal); err != nil {
-			return nil, err
-		}
-		cals = append(cals, cal)
-	}
-	return cals, nil
-}
-
-func (c *MongoClient) GetOneCal(calId string) (MongoCal, error) {
-	res := c.calsCollection.FindOne(c.ctx, bson.M{"_id": calId})
-	var cal MongoCal
-	err := res.Decode(&cal)
-	return cal, err
-}
-
-func (c *MongoClient) UpsertOneCal(cal MongoCal) error {
-	filter := bson.M{"_id": cal.Url}
-	update := bson.M{
-		"$set": cal,
-		// bson.M{
-		// 	"googleId":    cal.GoogleId,
-		// 	"summary":     cal.Summary,
-		// 	"description": cal.Description,
-		// },
-	}
-	_, err := c.calsCollection.UpdateOne(c.ctx, filter, update, options.Update().SetUpsert(true))
-	if err != nil {
-		return err
-	}
-	return nil
-}
-
-func (c *MongoClient) DeleteCalsNotInSet(urlsToKeep map[string]bool) error {
-	curs, err := c.calsCollection.Find(c.ctx, bson.M{})
-	if err != nil {
-		return err
-	}
-	defer curs.Close(c.ctx)
-
-	for curs.Next(c.ctx) {
-		var doc bson.M
-		err = curs.Decode(&doc)
-		if err != nil {
-			return err
-		}
-		calUrl, ok := doc["_id"].(string)
-		if !ok {
-			continue
-		}
-		if !urlsToKeep[calUrl] {
-			log.Println("  cleaning up", calUrl)
-			_, err = c.calsCollection.DeleteOne(c.ctx, bson.M{"_id": doc["_id"]})
-			if err != nil {
-				return err
-			}
-		}
-	}
-	return curs.Err()
-}
-
-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")
-// }