Files
alfred-be/alfred/cmd/core/main.go
2026-03-08 16:14:42 +05:30

61 lines
1.6 KiB
Go

package main
import (
"alfred/cmd/core/app"
"alfred/config"
"alfred/internal/clients"
"alfred/pkg/log"
"alfred/pkg/s3"
"alfred/repository"
"alfred/repositoryAccessLayer"
"os"
"time"
ginzap "github.com/gin-contrib/zap"
"github.com/gin-gonic/gin"
"github.com/spf13/cobra"
_ "go.uber.org/automaxprocs"
"go.uber.org/zap"
)
func main() {
log.InitLogger("alfred-core")
config.LoadCoreConfig()
command := &cobra.Command{
Use: "alfred-core",
Short: "alfred core serves cruise control, internal requests",
Long: "alfred core serves cruise control, internal requests",
RunE: func(cmd *cobra.Command, args []string) error {
r := gin.New()
r.Use(ginzap.Ginzap(log.GetLogger(), time.RFC3339, true))
r.Use(ginzap.RecoveryWithZap(log.GetLogger(), true))
s3Client := s3.NewS3Client()
httpClient := clients.NewHttpClient(config.GetCoreConfig().HttpConfig)
mjolnirClient := clients.NewMjolnirClient(httpClient.HttpClient,
config.GetCoreConfig().OutboundServiceConfig.MjolnirServiceUrl, config.GetCoreConfig().OutboundServiceConfig.MjolnirRealmId,
)
ingestorClient := clients.NewAlfredIngestorClient(httpClient.HttpClient)
esConfig := config.GetCoreConfig().ElasticSearchConfig.BaseConfig
repositories := repository.InitRepositories(esConfig)
repositoryAccessLayer := repositoryAccessLayer.InitRepositoryAccessLayer(repositories)
sv := app.NewServer(r, repositoryAccessLayer, s3Client, httpClient, mjolnirClient, ingestorClient)
sv.Handler()
sv.Start()
return nil
},
}
if err := command.Execute(); err != nil {
log.Error("alfred core command execution failed", zap.Error(err))
os.Exit(1)
}
}