view calsync/convert/convert.go @ 58:6c7151126a0b

logging and refactor
author drewp@bigasterisk.com
date Thu, 05 Sep 2024 17:01:23 -0700
parents 635ff76f867c
children
line wrap: on
line source

package convert

import (
	"log"
	"time"

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

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

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
}