chore: initial commit
This commit is contained in:
66
cmd/main.go
Normal file
66
cmd/main.go
Normal file
@@ -0,0 +1,66 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"server/internal/config"
|
||||
"server/internal/db"
|
||||
"server/internal/handler"
|
||||
"server/internal/middleware"
|
||||
"server/internal/pkg/cache"
|
||||
"server/internal/pkg/logger"
|
||||
"server/internal/router"
|
||||
"server/internal/service"
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
"go.uber.org/fx"
|
||||
)
|
||||
|
||||
func NewHttpServer(lc fx.Lifecycle, r *chi.Mux, cfg *config.Config) *http.Server {
|
||||
srv := &http.Server{
|
||||
Addr: fmt.Sprintf("%s:%s", cfg.Server.Host, cfg.Server.Port),
|
||||
Handler: r,
|
||||
}
|
||||
|
||||
lc.Append(fx.Hook{
|
||||
OnStart: func(ctx context.Context) error {
|
||||
go func() {
|
||||
err := srv.ListenAndServe()
|
||||
if err != nil {
|
||||
slog.Error("server error", "error", err)
|
||||
}
|
||||
}()
|
||||
slog.Info(fmt.Sprintf("starting HTTP server http://%s", srv.Addr))
|
||||
return nil
|
||||
},
|
||||
OnStop: func(ctx context.Context) error {
|
||||
return srv.Shutdown(ctx)
|
||||
},
|
||||
})
|
||||
|
||||
return srv
|
||||
}
|
||||
|
||||
func main() {
|
||||
app := fx.New(
|
||||
fx.Provide(
|
||||
config.NewConfig,
|
||||
logger.New,
|
||||
cache.NewCaches,
|
||||
middleware.NewJWTMiddleware,
|
||||
middleware.NewAuthMiddleware,
|
||||
middleware.NewLoggerMiddleware,
|
||||
router.NewRouter,
|
||||
db.NewDB,
|
||||
db.NewQueries,
|
||||
),
|
||||
handler.Module,
|
||||
service.Module,
|
||||
fx.Invoke(func(*slog.Logger) {}),
|
||||
fx.Invoke(NewHttpServer),
|
||||
)
|
||||
|
||||
app.Run()
|
||||
}
|
||||
Reference in New Issue
Block a user