76 lines
1.8 KiB
Go
76 lines
1.8 KiB
Go
package cmds
|
|
|
|
import (
|
|
"git.itzana.me/strafesnet/maps-service/pkg/datastore/gormstore"
|
|
"git.itzana.me/strafesnet/maps-service/pkg/service"
|
|
log "github.com/sirupsen/logrus"
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
func NewAORCommand() *cli.Command {
|
|
return &cli.Command{
|
|
Name: "aor",
|
|
Usage: "Run AOR (Accept or Reject) event processor",
|
|
Action: runAORProcessor,
|
|
Flags: []cli.Flag{
|
|
&cli.StringFlag{
|
|
Name: "pg-host",
|
|
Usage: "Host of postgres database",
|
|
EnvVars: []string{"PG_HOST"},
|
|
Required: true,
|
|
},
|
|
&cli.IntFlag{
|
|
Name: "pg-port",
|
|
Usage: "Port of postgres database",
|
|
EnvVars: []string{"PG_PORT"},
|
|
Required: true,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "pg-db",
|
|
Usage: "Name of database to connect to",
|
|
EnvVars: []string{"PG_DB"},
|
|
Required: true,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "pg-user",
|
|
Usage: "User to connect with",
|
|
EnvVars: []string{"PG_USER"},
|
|
Required: true,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "pg-password",
|
|
Usage: "Password to connect with",
|
|
EnvVars: []string{"PG_PASSWORD"},
|
|
Required: true,
|
|
},
|
|
&cli.BoolFlag{
|
|
Name: "migrate",
|
|
Usage: "Run database migrations",
|
|
Value: false,
|
|
EnvVars: []string{"MIGRATE"},
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
func runAORProcessor(ctx *cli.Context) error {
|
|
log.Info("Starting AOR event processor")
|
|
|
|
// Connect to database
|
|
db, err := gormstore.New(ctx)
|
|
if err != nil {
|
|
log.WithError(err).Fatal("failed to connect database")
|
|
return err
|
|
}
|
|
|
|
// Create scheduler and process events
|
|
scheduler := service.NewAORScheduler(db)
|
|
if err := scheduler.ProcessAOREvents(); err != nil {
|
|
log.WithError(err).Error("AOR event processing failed")
|
|
return err
|
|
}
|
|
|
|
log.Info("AOR event processor completed successfully")
|
|
return nil
|
|
}
|