diff --git a/.gitignore b/.gitignore index 4eb15c5..c2821ac 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -.idea -.vscode .DS_Store -.swagger \ No newline at end of file +.idea +.zed +.vscode \ No newline at end of file diff --git a/Justfile b/Justfile index 7274f99..5e43b5d 100644 --- a/Justfile +++ b/Justfile @@ -47,14 +47,14 @@ test: gen: go generate ./... -# Generate openapi.yaml -apidoc: - go tool swag init -g cmd/app/main.go -o . -ot yaml --v3.1 --parseDependency && mv swagger.yaml openapi.yaml - # Generate gorm repositories using gorm cli repos: go tool gorm gen -i ./app/book/repository.go -o ./app/book/bookrepo +# Generate openapi.yaml +apidoc: + go tool swag init -g cmd/app/main.go -o . -ot yaml --v3.1 --parseDependency && mv swagger.yaml openapi.yaml + # Build production distroless image build-for-prod: docker build -f prod.Dockerfile . -t myapp-app \ No newline at end of file diff --git a/app/book/handler.go b/app/book/handler.go index cfc8140..5dfde43 100644 --- a/app/book/handler.go +++ b/app/book/handler.go @@ -20,14 +20,14 @@ import ( ) type Handler struct { - validator *validator.Validate bookRepo IBookRepo + validator *validator.Validate } -func New(validator *validator.Validate, db *gorm.DB) *Handler { +func New(db *gorm.DB, validator *validator.Validate) *Handler { return &Handler{ - validator: validator, bookRepo: bookrepo.IBookRepo[model.Book](db), + validator: validator, } } diff --git a/app/router/router.go b/app/router/router.go index f180921..a283831 100644 --- a/app/router/router.go +++ b/app/router/router.go @@ -17,7 +17,7 @@ import ( mrl "myapp/pkg/middleware/requestlog" ) -func New(c *config.ConfCORS, l *zerolog.Logger, v *validator.Validate, db *gorm.DB) *chi.Mux { +func New(c *config.ConfCORS, l *zerolog.Logger, db *gorm.DB, v *validator.Validate) *chi.Mux { r := chi.NewRouter() r.Get("/livez", func(w http.ResponseWriter, _ *http.Request) { w.Write([]byte(".")) @@ -34,12 +34,12 @@ func New(c *config.ConfCORS, l *zerolog.Logger, v *validator.Validate, db *gorm. r.Route("/v1", func(r chi.Router) { r.Use(cors.Handler) + r.Use(m.ContentTypeJSON) r.Use(hlog.NewHandler(*l)) r.Use(hlog.RequestIDHandler("request_id", "X-Request-ID")) r.Use(mrl.NewHandler) - r.Use(m.ContentTypeJSON) - r.Route("/books", book.New(v, db).Register) + r.Route("/books", book.New(db, v).Register) }) return r diff --git a/cmd/app/main.go b/cmd/app/main.go index 278fa9c..87c3a8c 100644 --- a/cmd/app/main.go +++ b/cmd/app/main.go @@ -48,8 +48,6 @@ func main() { zerolog.SetGlobalLevel(logLevel) l := zerolog.New(os.Stderr).With().Timestamp().Logger() - v := validator.New() - logLevelDB := gormlogger.Error if c.DB.Debug { logLevelDB = gormlogger.Info @@ -62,7 +60,9 @@ func main() { return } - mux := router.New(&c.CORS, &l, v, db) + v := validator.New() + + mux := router.New(&c.CORS, &l, db, v) s := &http.Server{ Addr: fmt.Sprintf(":%d", c.Server.Port), diff --git a/pkg/middleware/requestlog/handler.go b/pkg/middleware/requestlog/handler.go index 34763ef..f92d398 100644 --- a/pkg/middleware/requestlog/handler.go +++ b/pkg/middleware/requestlog/handler.go @@ -1,5 +1,5 @@ // Package requestlog -// Copyright 2019-2025 The Go Cloud Development Kit Authors +// Copyright 2018-2026 The Go Cloud Development Kit Authors // Modified by Dumindu Madunuwan // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/pkg/middleware/requestlog/log_entry.go b/pkg/middleware/requestlog/log_entry.go index a69389b..95dc59b 100644 --- a/pkg/middleware/requestlog/log_entry.go +++ b/pkg/middleware/requestlog/log_entry.go @@ -1,5 +1,5 @@ // Package requestlog -// Copyright 2019-2025 The Go Cloud Development Kit Authors +// Copyright 2018-2026 The Go Cloud Development Kit Authors // Modified by Dumindu Madunuwan // // Licensed under the Apache License, Version 2.0 (the "License");