niki/cmd/benefactor/command/serve.go

48 lines
1.0 KiB
Go

package command
import (
"context"
"git.gocasts.ir/ebhomengo/niki/benefactorapp"
"git.gocasts.ir/ebhomengo/niki/pkg/logger"
"github.com/spf13/cobra"
)
var migrateUp bool
var migrateDown bool
var serveCmd = &cobra.Command{
Use: "serve",
Short: "Start the benefactor service",
Long: `This command starts the main benefactor service.`,
Run: func(cmd *cobra.Command, args []string) {
serve()
},
}
func serve() {
var cfg = loadAppConfig()
// Initialize logger
logger.Init(cfg.Logger)
log := logger.L()
db := getDB(cfg.MySQLDB)
migrate()
// Start the server
log.Info("Starting benefactor Service...")
// Connect to the database
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
app := benefactorapp.Setup(ctx, cfg, *db)
app.Start()
}
func init() {
serveCmd.Flags().BoolVar(&migrateUp, "migrate-up", false, "Run migrations up before starting the server")
serveCmd.Flags().BoolVar(&migrateDown, "migrate-down", false, "Run migrations down before starting the server")
RootCmd.AddCommand(serveCmd)
}