mirror of
https://github.com/grassrootseconomics/farmstar-survey-backend.git
synced 2024-12-21 23:17:33 +01:00
69 lines
1.1 KiB
Go
69 lines
1.1 KiB
Go
|
package worker
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"time"
|
||
|
|
||
|
"github.com/jackc/pgx/v5"
|
||
|
"github.com/riverqueue/river"
|
||
|
)
|
||
|
|
||
|
type (
|
||
|
Worker struct {
|
||
|
Client *river.Client[pgx.Tx]
|
||
|
}
|
||
|
)
|
||
|
|
||
|
func NewWorker(riverClient *river.Client[pgx.Tx]) *Worker {
|
||
|
return &Worker{
|
||
|
Client: riverClient,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (w *Worker) Start() error {
|
||
|
return w.Client.Start(context.Background())
|
||
|
}
|
||
|
|
||
|
func (w *Worker) Stop() error {
|
||
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||
|
defer cancel()
|
||
|
|
||
|
return w.Client.Stop(ctx)
|
||
|
}
|
||
|
|
||
|
func (w *Worker) QueueRewardsTask(phone string, amount uint) error {
|
||
|
_, err := w.Client.Insert(context.Background(), RewardsArgs{
|
||
|
Phone: phone,
|
||
|
Amount: amount,
|
||
|
}, nil)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (w *Worker) QueueSMSTask(phone string, SMS SMSType, text string) error {
|
||
|
_, err := w.Client.Insert(context.Background(), SMSArgs{
|
||
|
Phone: phone,
|
||
|
SMS: SMS,
|
||
|
Text: text,
|
||
|
}, nil)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (w *Worker) QueueTgTask(msg string) error {
|
||
|
_, err := w.Client.Insert(context.Background(), TelegramArgs{
|
||
|
Msg: msg,
|
||
|
}, nil)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|