feat!: due date reminder notifications
This commit is contained in:
@ -68,6 +68,6 @@ func initConfig() {
|
||||
// Execute the root cobra command
|
||||
func Execute() {
|
||||
rootCmd.SetVersionTemplate(VersionTemplate())
|
||||
rootCmd.AddCommand(newTokenCmd(), newWebCmd(), newMigrateCmd(), newWorkerCmd(), newResetPasswordCmd(), newSeedCmd())
|
||||
rootCmd.AddCommand(newJobCmd(), newTokenCmd(), newWebCmd(), newMigrateCmd(), newWorkerCmd(), newResetPasswordCmd(), newSeedCmd())
|
||||
rootCmd.Execute()
|
||||
}
|
||||
|
60
internal/commands/job.go
Normal file
60
internal/commands/job.go
Normal file
@ -0,0 +1,60 @@
|
||||
package commands
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/RichardKnop/machinery/v1"
|
||||
mTasks "github.com/RichardKnop/machinery/v1/tasks"
|
||||
|
||||
queueLog "github.com/RichardKnop/machinery/v1/log"
|
||||
"github.com/jmoiron/sqlx"
|
||||
"github.com/jordanknott/taskcafe/internal/config"
|
||||
"github.com/jordanknott/taskcafe/internal/jobs"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func newJobCmd() *cobra.Command {
|
||||
cc := &cobra.Command{
|
||||
Use: "job",
|
||||
Short: "Run a task manually",
|
||||
Long: "Run a task manually",
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
Formatter := new(log.TextFormatter)
|
||||
Formatter.TimestampFormat = "02-01-2006 15:04:05"
|
||||
Formatter.FullTimestamp = true
|
||||
log.SetFormatter(Formatter)
|
||||
log.SetLevel(log.InfoLevel)
|
||||
|
||||
appConfig, err := config.GetAppConfig()
|
||||
if err != nil {
|
||||
log.Panic(err)
|
||||
}
|
||||
db, err := sqlx.Connect("postgres", config.GetDatabaseConfig().GetDatabaseConnectionUri())
|
||||
if err != nil {
|
||||
log.Panic(err)
|
||||
}
|
||||
db.SetMaxOpenConns(25)
|
||||
db.SetMaxIdleConns(25)
|
||||
db.SetConnMaxLifetime(5 * time.Minute)
|
||||
defer db.Close()
|
||||
|
||||
log.Info("starting task queue server instance")
|
||||
jobConfig := appConfig.Job.GetJobConfig()
|
||||
server, err := machinery.NewServer(&jobConfig)
|
||||
if err != nil {
|
||||
// do something with the error
|
||||
}
|
||||
queueLog.Set(&jobs.MachineryLogger{})
|
||||
|
||||
signature := &mTasks.Signature{
|
||||
Name: "scheduleDueDateNotifications",
|
||||
}
|
||||
server.SendTask(signature)
|
||||
|
||||
return nil
|
||||
},
|
||||
}
|
||||
return cc
|
||||
}
|
@ -5,6 +5,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/RichardKnop/machinery/v1"
|
||||
mTasks "github.com/RichardKnop/machinery/v1/tasks"
|
||||
"github.com/golang-migrate/migrate/v4"
|
||||
"github.com/golang-migrate/migrate/v4/database/postgres"
|
||||
"github.com/golang-migrate/migrate/v4/source/httpfs"
|
||||
@ -36,6 +37,12 @@ func newWebCmd() *cobra.Command {
|
||||
return err
|
||||
}
|
||||
|
||||
redisClient, err := appConfig.MessageQueue.GetMessageQueueClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer redisClient.Close()
|
||||
|
||||
connection := appConfig.Database.GetDatabaseConnectionUri()
|
||||
var db *sqlx.DB
|
||||
var retryDuration time.Duration
|
||||
@ -67,15 +74,17 @@ func newWebCmd() *cobra.Command {
|
||||
}
|
||||
|
||||
var server *machinery.Server
|
||||
if appConfig.Job.Enabled {
|
||||
jobConfig := appConfig.Job.GetJobConfig()
|
||||
server, err = machinery.NewServer(&jobConfig)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
jobConfig := appConfig.Job.GetJobConfig()
|
||||
server, err = machinery.NewServer(&jobConfig)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
signature := &mTasks.Signature{
|
||||
Name: "scheduleDueDateNotifications",
|
||||
}
|
||||
server.SendTask(signature)
|
||||
|
||||
r, _ := route.NewRouter(db, server, appConfig)
|
||||
r, _ := route.NewRouter(db, redisClient, server, appConfig)
|
||||
log.WithFields(log.Fields{"url": viper.GetString("server.hostname")}).Info("starting server")
|
||||
return http.ListenAndServe(viper.GetString("server.hostname"), r)
|
||||
},
|
||||
|
@ -47,7 +47,11 @@ func newWorkerCmd() *cobra.Command {
|
||||
}
|
||||
queueLog.Set(&jobs.MachineryLogger{})
|
||||
repo := *repo.NewRepository(db)
|
||||
jobs.RegisterTasks(server, repo)
|
||||
redisClient, err := appConfig.MessageQueue.GetMessageQueueClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
jobs.RegisterTasks(server, repo, appConfig, redisClient)
|
||||
|
||||
worker := server.NewWorker("taskcafe_worker", 10)
|
||||
log.Info("starting task queue worker")
|
||||
|
Reference in New Issue
Block a user