mirror of
https://github.com/sigmasternchen/threadule
synced 2025-03-15 08:09:01 +00:00
added scheduler code
This commit is contained in:
parent
36c83e6471
commit
7e853da63d
5 changed files with 51 additions and 4 deletions
|
@ -5,6 +5,7 @@ import "threadule/backend/internal/data/models"
|
|||
type Data interface {
|
||||
UpdateTweet(tweet *models.Tweet) error
|
||||
|
||||
GetScheduledThreads() ([]models.Thread, error)
|
||||
GetTweetsForThread(thread *models.Thread) ([]models.Tweet, error)
|
||||
UpdateThread(thread *models.Thread) error
|
||||
}
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
package data
|
||||
|
||||
import "threadule/backend/internal/data/models"
|
||||
import (
|
||||
"threadule/backend/internal/data/models"
|
||||
"time"
|
||||
)
|
||||
|
||||
func (d *Data) UpdateThread(thread *models.Thread) error {
|
||||
return d.db.Save(thread).Error
|
||||
|
@ -14,3 +17,14 @@ func (d *Data) GetTweetsForThread(thread *models.Thread) ([]models.Tweet, error)
|
|||
Find(&tweets).Error
|
||||
return tweets, err
|
||||
}
|
||||
|
||||
func (d *Data) GetScheduledThreads() ([]models.Thread, error) {
|
||||
var threads []models.Thread
|
||||
|
||||
err := d.db.
|
||||
Where("scheduled_for <= ?", time.Now()).
|
||||
Where("status = ?", models.ThreadScheduled).
|
||||
Find(&threads).
|
||||
Error
|
||||
return threads, err
|
||||
}
|
||||
|
|
|
@ -9,7 +9,11 @@ type Logic struct {
|
|||
var _ app.Logic = &Logic{}
|
||||
|
||||
func Setup(ctx *app.Context) (app.Logic, error) {
|
||||
return &Logic{
|
||||
logic := &Logic{
|
||||
ctx: ctx,
|
||||
}, nil
|
||||
}
|
||||
|
||||
logic.startScheduler()
|
||||
|
||||
return logic, nil
|
||||
}
|
||||
|
|
14
backend/internal/logic/scheduler.go
Normal file
14
backend/internal/logic/scheduler.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
package logic
|
||||
|
||||
import "time"
|
||||
|
||||
func (l *Logic) startScheduler() {
|
||||
ticker := time.NewTicker(time.Minute)
|
||||
|
||||
go func() {
|
||||
for {
|
||||
_ = <-ticker.C
|
||||
l.scheduleTrigger()
|
||||
}
|
||||
}()
|
||||
}
|
|
@ -1,6 +1,8 @@
|
|||
package logic
|
||||
|
||||
import "threadule/backend/internal/data/models"
|
||||
import (
|
||||
"threadule/backend/internal/data/models"
|
||||
)
|
||||
import "github.com/dghubble/oauth1"
|
||||
import "github.com/dghubble/go-twitter/twitter"
|
||||
|
||||
|
@ -100,3 +102,15 @@ func (l *Logic) sendThread(thread *models.Thread) {
|
|||
_ = l.ctx.Data.UpdateThread(thread)
|
||||
// TODO log data error
|
||||
}
|
||||
|
||||
func (l *Logic) scheduleTrigger() {
|
||||
threads, err := l.ctx.Data.GetScheduledThreads()
|
||||
if err != nil {
|
||||
// TODO log error
|
||||
return
|
||||
}
|
||||
|
||||
for _, thread := range threads {
|
||||
l.sendThread(&thread)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue