package main import ( "flag" "os" "path/filepath" "edge-infra.dev/pkg/edge/api/graph/setup" "edge-infra.dev/pkg/edge/api/types" "edge-infra.dev/pkg/lib/fog" _ "github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/postgres" "github.com/gin-gonic/gin" "github.com/joho/godotenv" "github.com/peterbourgon/ff/v3" ) func init() { // load .env file only when the APP_ENV variable is not specified if os.Getenv("APP_ENV") == "" { if err := godotenv.Load(filepath.Join("cmd", "edge", "api", ".env")); err != nil { log := fog.New() log.Error(err, "error loading .env file") } } gin.SetMode(gin.ReleaseMode) gin.DisableConsoleColor() } func main() { flags := flag.NewFlagSet("ee-bff-golang", flag.ExitOnError) config := &types.Config{} config.BindFlags(flags) config.BindKubeConfigFlag(flags) if err := ff.Parse(flags, os.Args[1:], ff.WithEnvVarNoPrefix(), ff.WithIgnoreUndefined(true)); err != nil { errLog := fog.New() errLog.Error(err, "failed to parse command line arguments or environment variables") } config.Validate() // Logger Setup log := setup.Log(config) //setup db connection dbConnection, _ := setup.DB(config, log) defer dbConnection.Close() bqClient, err := setup.BQClient(config) if err != nil { log.Error(err, "failed to create bq client") os.Exit(1) } resolver := setup.Resolver(config, dbConnection, bqClient) gqlConfig := setup.GqlConfig(resolver) srv := setup.GqlServer(gqlConfig, config, resolver) setup.Server(log, config, srv, dbConnection, resolver) }