mirror of
https://github.com/Xevion/todoist-late-reset.git
synced 2025-12-14 14:13:23 -06:00
Add essential request parsing, get scheduling and task reading working
This commit is contained in:
69
main.go
69
main.go
@@ -15,13 +15,12 @@ import (
|
||||
|
||||
"github.com/go-co-op/gocron/v2"
|
||||
"github.com/joho/godotenv"
|
||||
"github.com/redis/go-redis/v9"
|
||||
)
|
||||
|
||||
var (
|
||||
todoistApiToken = os.Getenv("TODOIST_API_TOKEN")
|
||||
redisURL = os.Getenv("REDIS_URL")
|
||||
cronSchedule = os.Getenv("CRON_SCHEDULE")
|
||||
todoistApiToken string
|
||||
redisURL string
|
||||
cronSchedule string
|
||||
client = &http.Client{}
|
||||
)
|
||||
|
||||
@@ -33,34 +32,72 @@ func init() {
|
||||
}
|
||||
}
|
||||
|
||||
func primary() error {
|
||||
log, err := getRecentlyCompleted()
|
||||
if err != nil {
|
||||
fmt.Println("Error getting recently completed tasks:", err)
|
||||
return err
|
||||
}
|
||||
|
||||
now := time.Now()
|
||||
startTime := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
|
||||
endTime := startTime.Add(3 * time.Hour)
|
||||
|
||||
for _, event := range log.Events {
|
||||
if event.EventDate.After(startTime) && event.EventDate.Before(endTime) {
|
||||
fmt.Printf("%s - %s\n", event.EventDate.Format("Monday, January 2, 3:04 PM"), event.ExtraData["content"])
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
opt, _ := redis.ParseURL(redisURL)
|
||||
client := redis.NewClient(opt)
|
||||
todoistApiToken = os.Getenv("TODOIST_API_KEY")
|
||||
redisURL = os.Getenv("REDIS_URL")
|
||||
cronSchedule = os.Getenv("CRON_SCHEDULE")
|
||||
|
||||
// opt, _ := redis.ParseURL(redisURL)
|
||||
// client := redis.NewClient(opt)
|
||||
|
||||
// create a scheduler
|
||||
s, err := gocron.NewScheduler()
|
||||
if err != nil {
|
||||
// TODO: handle error
|
||||
fmt.Println("Error creating scheduler:", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// add a job to the scheduler
|
||||
_, err = s.NewJob(
|
||||
j, err := s.NewJob(
|
||||
gocron.CronJob(cronSchedule, false),
|
||||
gocron.NewTask(
|
||||
func(a string, b int) {
|
||||
fmt.Println("Current time:", time.Now().Format(time.RFC3339))
|
||||
},
|
||||
"hello",
|
||||
1,
|
||||
),
|
||||
gocron.NewTask(primary),
|
||||
)
|
||||
if err != nil {
|
||||
// handle error
|
||||
fmt.Println("Error adding job to scheduler:", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Start the scheduler
|
||||
s.Start()
|
||||
|
||||
nextRun, err := j.NextRun()
|
||||
if err != nil {
|
||||
fmt.Println("Error getting next run time:", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
durationUntilNextRun := time.Until(nextRun).Seconds()
|
||||
fmt.Printf("startup: next run in %.2f seconds: %v\n", durationUntilNextRun, nextRun.Format(time.RFC3339))
|
||||
|
||||
if durationUntilNextRun > 1 {
|
||||
// Run the job immediately
|
||||
err = j.RunNow()
|
||||
fmt.Println("startup: running job immediately")
|
||||
if err != nil {
|
||||
fmt.Println("Error running job immediately:", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
// Setup signal handler channel
|
||||
stop := make(chan os.Signal, 1)
|
||||
signal.Notify(stop, os.Interrupt) // Ctrl+C signal
|
||||
|
||||
Reference in New Issue
Block a user