diff --git a/cmd/server/main.go b/cmd/server/main.go index 9ee67fb..aab61b5 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -1,25 +1,9 @@ package main import ( - "context" - "github.com/99designs/gqlgen/graphql/handler" - "github.com/99designs/gqlgen/graphql/handler/extension" - "github.com/99designs/gqlgen/graphql/handler/transport" - "github.com/darleet/blog-graphql/internal/middleware/auth" - "github.com/darleet/blog-graphql/internal/middleware/loader" - "github.com/darleet/blog-graphql/internal/middleware/logging" - "github.com/darleet/blog-graphql/internal/middleware/recoverer" - "github.com/darleet/blog-graphql/internal/ports/gql/resolver" - "github.com/darleet/blog-graphql/internal/ports/gql/runtime" - "github.com/darleet/blog-graphql/internal/repository/pg" - "github.com/darleet/blog-graphql/internal/usecase/article" - "github.com/darleet/blog-graphql/internal/usecase/comment" - "github.com/darleet/blog-graphql/internal/usecase/user" - "github.com/darleet/blog-graphql/internal/usecase/vote" - "github.com/jackc/pgx/v5/pgxpool" + "github.com/darleet/blog-graphql/config" + "github.com/darleet/blog-graphql/internal/server" "go.uber.org/zap" - "net/http" - "os" ) const defaultPort = "8080" @@ -33,42 +17,12 @@ func main() { } }(log) - port := os.Getenv("SERVER_PORT") - if port == "" { - port = defaultPort - } - - pool, err := pgxpool.New(context.Background(), os.Getenv("PG_URL")) + conf, err := config.NewConfig(".env") if err != nil { log.Fatal(err) } - - err = pool.Ping(context.Background()) + err = server.NewServer(log, conf).Start() if err != nil { log.Fatal(err) } - - repo := pg.NewRepository(pool) - - articles := article.NewUsecase(repo) - comments := comment.NewUsecase(repo) - votes := vote.NewUsecase(repo) - users := user.NewUsecase() - - res := resolver.NewRootResolvers(log, articles, comments, users, votes) - srv := handler.NewDefaultServer(runtime.NewExecutableSchema(res)) - - srv.AddTransport(&transport.Websocket{}) - - srv.Use(extension.FixedComplexityLimit(300)) - - recMW := recoverer.Middleware(log) - authMW := auth.Middleware() - logMW := logging.Middleware(log) - - http.Handle("/query", loader.Middleware(repo, authMW(logMW(recMW(srv))))) - - log.Info("Server started on http://localhost:%s/", port) - log.Fatal(http.ListenAndServe(":"+port, nil)) - } diff --git a/config/config.go b/config/config.go index 69c8195..e059618 100644 --- a/config/config.go +++ b/config/config.go @@ -1,4 +1,4 @@ -package server +package config import ( "fmt" diff --git a/internal/server/server.go b/internal/server/server.go index c9a6d6b..25e6ebf 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -96,6 +96,6 @@ func (s *Server) Start() error { } http.Handle("/query", h) - s.log.Info("Server started on http://%s:%s/", s.config.Host, s.config.Port) + s.log.Infof("Server started on http://%s:%s/", s.config.Host, s.config.Port) return http.ListenAndServe(s.config.Host+":"+s.config.Port, nil) }