niki/cmd/shoppingbasketapp/command/serve.go

52 lines
1.2 KiB
Go

package command
import (
"context"
"fmt"
"git.gocasts.ir/ebhomengo/niki/pkg/logger"
"git.gocasts.ir/ebhomengo/niki/shoppingbasketapp"
"github.com/spf13/cobra"
"log"
)
var migrateUp bool
var migrateDown bool
var ServeCmd = &cobra.Command{
Use: "serve",
Short: "Start shoppingbasket service",
Long: `This command starts the main shoppingbasket service.`,
Run: func(cmd *cobra.Command, args []string) {
serve()
},
}
func serve() {
var cfg shoppingbasketapp.Config = loadAppConfig()
logger.Init(cfg.Logger)
l := logger.L()
l.Info("Starting shoppingbasket service...")
migrate()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
app, err := shoppingbasketapp.Setup(ctx, cfg)
if err != nil {
l.Error("failed initialize shopping basket app", "error", err)
log.Fatalf(fmt.Sprintf("error starting shopping basket app: %v", err))
}
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")
ServeCmd.MarkFlagsMutuallyExclusive("migrate-up", "migrate-down")
RootCmd.AddCommand(ServeCmd)
}