Files
grosbeak/internal/engine/entre.go
Matt Jadud f53639af2f Queueing, prepping to fetch
A lot more to go, but this is the core.

Need to think about how to test the queue handlers.
2025-11-30 21:29:30 -05:00

40 lines
988 B
Go

package engine
import (
"context"
"fmt"
"log"
"time"
"git.jadud.com/jadudm/grosbeak/internal/liteq"
base "git.jadud.com/jadudm/grosbeak/internal/types"
)
func Entre(queue *liteq.JobQueue, ej *base.EntreJob) error {
n := time.Now()
var ignore_tag string
switch ej.UpdateFrequency {
case base.UPDATE_DAILY:
ignore_tag = fmt.Sprintf("%s|y%d-yd%d", ej.URL, n.Year(), n.YearDay())
case base.UPDATE_WEEKLY:
ignore_tag = fmt.Sprintf("%s|y%d-w%d", ej.URL, n.Year(), n.YearDay()/7)
case base.UPDATE_MONTHLY:
ignore_tag = fmt.Sprintf("%s|y%d-m%d", ej.URL, n.Year(), n.Month())
default:
ignore_tag = fmt.Sprintf("%s|y%d-yd%d", ej.URL, n.Year(), n.YearDay())
}
err := queue.QueueJob(context.Background(), liteq.QueueJobParams{
Queue: "fetch",
// This only works for things in the `queued` state
DedupingKey: liteq.IgnoreDuplicate(ignore_tag),
Job: ej.AsJson(),
})
if err != nil {
log.Printf("entre err %s: %s\n", ej.URL, err.Error())
}
return err
}