From 75b7e21becbf42be0f87f1d3e96d86e0e4869ef1 Mon Sep 17 00:00:00 2001 From: bel Date: Sat, 17 May 2025 21:17:26 -0600 Subject: [PATCH] asses.Next returns midnight if outside working hours --- src/asses/db.go | 4 ++++ src/asses/db_integration_test.go | 4 ++-- src/asses/deadline.go | 11 +++++++++++ src/cmd/asses/main.go | 11 +---------- 4 files changed, 18 insertions(+), 12 deletions(-) create mode 100644 src/asses/deadline.go diff --git a/src/asses/db.go b/src/asses/db.go index f3a2907..331539b 100644 --- a/src/asses/db.go +++ b/src/asses/db.go @@ -13,6 +13,10 @@ func Next(ctx context.Context) (time.Time, error) { return time.Time{}, err } + if deadline := Deadline(); time.Since(deadline) > time.Minute { + return time.Parse("2006-01-02", time.Now().Add(24*time.Hour).Format("2006-01-02")) + } + type Did struct { Did time.Time } diff --git a/src/asses/db_integration_test.go b/src/asses/db_integration_test.go index cf7ab74..c966300 100644 --- a/src/asses/db_integration_test.go +++ b/src/asses/db_integration_test.go @@ -13,7 +13,7 @@ func TestNextRecord(t *testing.T) { if v, err := asses.Next(ctx); err != nil { t.Fatal(err) - } else if zero := v.IsZero(); !zero { + } else if zero := v.IsZero(); !zero && time.Now().Hour() < 8 { t.Fatal(v) } @@ -23,7 +23,7 @@ func TestNextRecord(t *testing.T) { if v, err := asses.Next(ctx); err != nil { t.Fatal(err) - } else if since := time.Since(v); since > time.Minute { + } else if since := time.Since(v); since > time.Minute && time.Now().Hour() < 8 { t.Fatal(since) } } diff --git a/src/asses/deadline.go b/src/asses/deadline.go new file mode 100644 index 0000000..3ac94cf --- /dev/null +++ b/src/asses/deadline.go @@ -0,0 +1,11 @@ +package asses + +import "time" + +func Deadline() time.Time { + midnightLastNight, err := time.Parse("2006-01-02", time.Now().Format("2006-01-02")) + if err != nil { + panic(err) + } + return midnightLastNight.Add(8 * time.Hour) // midnight-8AM +} diff --git a/src/cmd/asses/main.go b/src/cmd/asses/main.go index 0da7e56..a43f37f 100644 --- a/src/cmd/asses/main.go +++ b/src/cmd/asses/main.go @@ -3,12 +3,10 @@ package asses import ( "context" "io/fs" - "log" "path" "path/filepath" "show-rss/src/asses" "show-rss/src/cron" - "time" ) var rootDs = []string{ @@ -19,14 +17,7 @@ var rootDs = []string{ type CB func(context.Context, string) error func Main(ctx context.Context) error { - midnightLastNight, err := time.Parse("2006-01-02", time.Now().Format("2006-01-02")) - if err != nil { - panic(err) - } - deadline := midnightLastNight.Add(8 * time.Hour) // midnight-8AM - log.Printf("assing until %v (%v)", deadline, time.Until(deadline)) - - ctx, can := context.WithDeadline(ctx, deadline) + ctx, can := context.WithDeadline(ctx, asses.Deadline()) defer can() return cron.Cron(ctx, asses.Next, One)