From eeae790fe49b4a6be95b412ab5b3cf8968ec9cc1 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Wed, 15 Nov 2023 21:17:43 -0600 Subject: [PATCH] feat: expose timeout variables (#622) * expose timeout variables * formatting --- backend/app/api/handlers/v1/v1_ctrl_items.go | 11 +++++------ backend/app/api/main.go | 3 +++ backend/app/api/routes.go | 4 ++-- .../core/services/reporting/eventbus/eventbus.go | 2 +- backend/internal/data/repo/main_test.go | 6 +++--- backend/internal/sys/config/conf.go | 5 ++++- docs/docs/quick-start.md | 3 +++ 7 files changed, 21 insertions(+), 13 deletions(-) diff --git a/backend/app/api/handlers/v1/v1_ctrl_items.go b/backend/app/api/handlers/v1/v1_ctrl_items.go index 36fab51..4990565 100644 --- a/backend/app/api/handlers/v1/v1_ctrl_items.go +++ b/backend/app/api/handlers/v1/v1_ctrl_items.go @@ -167,7 +167,6 @@ func (ctrl *V1Controller) HandleItemUpdate() errchain.HandlerFunc { return adapters.ActionID("id", fn, http.StatusOK) } - // HandleItemPatch godocs // // @Summary Update Item @@ -183,12 +182,12 @@ func (ctrl *V1Controller) HandleItemPatch() errchain.HandlerFunc { auth := services.NewContext(r.Context()) body.ID = ID - err := ctrl.repo.Items.Patch(auth, auth.GID, ID, body) - if err != nil { - return repo.ItemOut{}, err - } + err := ctrl.repo.Items.Patch(auth, auth.GID, ID, body) + if err != nil { + return repo.ItemOut{}, err + } - return ctrl.repo.Items.GetOneByGroup(auth, auth.GID, ID) + return ctrl.repo.Items.GetOneByGroup(auth, auth.GID, ID) } return adapters.ActionID("id", fn, http.StatusOK) diff --git a/backend/app/api/main.go b/backend/app/api/main.go index 49cb00e..19258b0 100644 --- a/backend/app/api/main.go +++ b/backend/app/api/main.go @@ -146,6 +146,9 @@ func run(cfg *config.Config) error { app.server = server.NewServer( server.WithHost(app.conf.Web.Host), server.WithPort(app.conf.Web.Port), + server.WithReadTimeout(app.conf.Web.ReadTimeout), + server.WithWriteTimeout(app.conf.Web.WriteTimeout), + server.WithIdleTimeout(app.conf.Web.IdleTimeout), ) log.Info().Msgf("Starting HTTP Server on %s:%s", app.server.Host, app.server.Port) diff --git a/backend/app/api/routes.go b/backend/app/api/routes.go index 50bbfb1..38792a7 100644 --- a/backend/app/api/routes.go +++ b/backend/app/api/routes.go @@ -51,7 +51,7 @@ func (a *app) mountRoutes(r *chi.Mux, chain *errchain.ErrChain, repos *repo.AllR v1Ctrl := v1.NewControllerV1( a.services, a.repos, - a.bus, + a.bus, v1.WithMaxUploadSize(a.conf.Web.MaxUploadSize), v1.WithRegistration(a.conf.Options.AllowRegistration), v1.WithDemoStatus(a.conf.Demo), // Disable Password Change in Demo Mode @@ -92,7 +92,7 @@ func (a *app) mountRoutes(r *chi.Mux, chain *errchain.ErrChain, repos *repo.AllR r.Post(v1Base("/actions/ensure-asset-ids"), chain.ToHandlerFunc(v1Ctrl.HandleEnsureAssetID(), userMW...)) r.Post(v1Base("/actions/zero-item-time-fields"), chain.ToHandlerFunc(v1Ctrl.HandleItemDateZeroOut(), userMW...)) r.Post(v1Base("/actions/ensure-import-refs"), chain.ToHandlerFunc(v1Ctrl.HandleEnsureImportRefs(), userMW...)) - r.Post(v1Base("/actions/set-primary-photos"), chain.ToHandlerFunc(v1Ctrl.HandleSetPrimaryPhotos(), userMW...)) + r.Post(v1Base("/actions/set-primary-photos"), chain.ToHandlerFunc(v1Ctrl.HandleSetPrimaryPhotos(), userMW...)) r.Get(v1Base("/locations"), chain.ToHandlerFunc(v1Ctrl.HandleLocationGetAll(), userMW...)) r.Post(v1Base("/locations"), chain.ToHandlerFunc(v1Ctrl.HandleLocationCreate(), userMW...)) diff --git a/backend/internal/core/services/reporting/eventbus/eventbus.go b/backend/internal/core/services/reporting/eventbus/eventbus.go index 508e1f0..0f837b3 100644 --- a/backend/internal/core/services/reporting/eventbus/eventbus.go +++ b/backend/internal/core/services/reporting/eventbus/eventbus.go @@ -38,7 +38,7 @@ func New() *EventBus { subscribers: map[Event][]func(any){ EventLabelMutation: {}, EventLocationMutation: {}, - EventItemMutation: {}, + EventItemMutation: {}, }, } } diff --git a/backend/internal/data/repo/main_test.go b/backend/internal/data/repo/main_test.go index 23a4198..dd221f2 100644 --- a/backend/internal/data/repo/main_test.go +++ b/backend/internal/data/repo/main_test.go @@ -13,8 +13,8 @@ import ( ) var ( - fk = faker.NewFaker() - tbus = eventbus.New() + fk = faker.NewFaker() + tbus = eventbus.New() tClient *ent.Client tRepos *AllRepos @@ -45,7 +45,7 @@ func TestMain(m *testing.M) { log.Fatalf("failed opening connection to sqlite: %v", err) } - go tbus.Run() + go tbus.Run() err = client.Schema.Create(context.Background()) if err != nil { diff --git a/backend/internal/sys/config/conf.go b/backend/internal/sys/config/conf.go index 6ece6c5..932affe 100644 --- a/backend/internal/sys/config/conf.go +++ b/backend/internal/sys/config/conf.go @@ -36,9 +36,12 @@ type DebugConf struct { } type WebConfig struct { - Port string `yaml:"port" conf:"default:7745"` + Port string `yaml:"port" conf:"default:7745"` Host string `yaml:"host"` MaxUploadSize int64 `yaml:"max_file_upload" conf:"default:10"` + ReadTimeout int `yaml:"read_timeout" conf:"default:10"` + WriteTimeout int `yaml:"write_timeout" conf:"default:10"` + IdleTimeout int `yaml:"idle_timeout" conf:"default:30"` } // New parses the CLI/Config file and returns a Config struct. If the file argument is an empty string, the diff --git a/docs/docs/quick-start.md b/docs/docs/quick-start.md index 8e8029a..8fa4e4d 100644 --- a/docs/docs/quick-start.md +++ b/docs/docs/quick-start.md @@ -62,6 +62,9 @@ volumes: | HBOX_OPTIONS_ALLOW_REGISTRATION | true | allow users to register themselves | | HBOX_OPTIONS_AUTO_INCREMENT_ASSET_ID | true | auto increments the asset_id field for new items | | HBOX_WEB_MAX_UPLOAD_SIZE | 10 | maximum file upload size supported in MB | +| HBOX_WEB_READ_TIMEOUT | 10 | Read timeout of HTTP sever | +| HBOX_WEB_WRITE_TIMEOUT | 10 | Write timeout of HTTP server | +| HBOX_WEB_IDLE_TIMEOUT | 30 | Idle timeout of HTTP server | | HBOX_STORAGE_DATA | /data/ | path to the data directory, do not change this if you're using docker | | HBOX_STORAGE_SQLITE_URL | /data/homebox.db?_fk=1 | sqlite database url, if you're using docker do not change this | | HBOX_LOG_LEVEL | info | log level to use, can be one of: trace, debug, info, warn, error, critical |