view calsync/convert/convert.go @ 51:a9b720445bcf

now roughly syncs cals and events to mongodb, one time
author drewp@bigasterisk.com
date Mon, 19 Aug 2024 14:42:27 -0700
parents 2991c1166852
children 635ff76f867c
line wrap: on
line source

package convert

import (
	"log"
	"time"

	"bigasterisk.com/go/gcalendarwatch/gcalclient"
	"bigasterisk.com/go/gcalendarwatch/mongoclient"
	"google.golang.org/api/calendar/v3"
)

func MongoCalFromGoogleCal(cal *calendar.CalendarListEntry) mongoclient.MongoCal {
	return mongoclient.MongoCal{
		Url:         gcalclient.MakeCalUrl(cal.Id),
		GoogleId:    cal.Id,
		Summary:     cal.Summary,
		Description: cal.Description,
	}
}

func MongoEventFromGoogleEvent2(
	calUrl string,
	ev *gcalclient.CalendarEvent,
	now time.Time,
) mongoclient.MongoEvent {
	return mongoEventFromGoogleEvent(ev, now)

}

func mongoEventFromGoogleEvent(ev *gcalclient.CalendarEvent, now time.Time) mongoclient.MongoEvent {
	return mongoclient.MongoEvent{
		LastUpdated:        now,
		Url:                ev.EventUrl,
		GoogleId:           ev.Id,
		CalendarUrl:        ev.CalendarUrl,
		HtmlLink:           ev.HtmlLink,
		Title:              ev.Summary,
		EndTimeUnspecified: ev.EndTimeUnspecified,
		Start:              ev.Start.DateTime,
		StartDate:          ev.Start.Date, // if all-day
		StartTime:          goTimeFromEventField(ev.Start),
		End:                ev.End.DateTime,
		EndDate:            ev.End.Date, // if all-day
		EndTime:            goTimeFromEventField(ev.End),
	}

}

func goTimeFromEventField(x *calendar.EventDateTime) time.Time {
	if x.Date != "" {
		t, err := time.Parse("2006-01-02", x.Date)
		if err != nil {
			log.Panicf("Error parsing x.Date %s: %v", x.Date, err)
		}
		return t
	}
	t, err := time.Parse(time.RFC3339, x.DateTime)
	if err != nil {
		log.Panicf("Error parsing x.DateTime %s: %v", x.DateTime, err)
	}
	return t
}