feat(analytics): use validator as a singleton

This commit is contained in:
Alexander 2024-12-24 15:14:31 +01:00
parent 471558fec5
commit fe7e200dba
4 changed files with 19 additions and 21 deletions

View file

@ -1,6 +1,7 @@
package analytics
import (
"github.com/go-playground/validator/v10"
"openreplay/backend/pkg/analytics/charts"
"time"
@ -31,11 +32,12 @@ func NewServiceBuilder(log logger.Logger, cfg *analytics.Config, webMetrics web.
if err != nil {
return nil, err
}
reqValidator := validator.New()
cardsService, err := cards.New(log, pgconn)
if err != nil {
return nil, err
}
cardsHandlers, err := cards.NewHandlers(log, cfg, responser, cardsService)
cardsHandlers, err := cards.NewHandlers(log, cfg, responser, cardsService, reqValidator)
if err != nil {
return nil, err
}
@ -43,7 +45,7 @@ func NewServiceBuilder(log logger.Logger, cfg *analytics.Config, webMetrics web.
if err != nil {
return nil, err
}
dashboardsHandlers, err := dashboards.NewHandlers(log, cfg, responser, dashboardsService)
dashboardsHandlers, err := dashboards.NewHandlers(log, cfg, responser, dashboardsService, reqValidator)
if err != nil {
return nil, err
}
@ -51,7 +53,7 @@ func NewServiceBuilder(log logger.Logger, cfg *analytics.Config, webMetrics web.
if err != nil {
return nil, err
}
chartsHandlers, err := charts.NewHandlers(log, cfg, responser, chartsService)
chartsHandlers, err := charts.NewHandlers(log, cfg, responser, chartsService, reqValidator)
if err != nil {
return nil, err
}

View file

@ -36,6 +36,7 @@ type handlersImpl struct {
responser *api.Responser
jsonSizeLimit int64
cards Cards
validator *validator.Validate
}
func (e *handlersImpl) GetAll() []*api.Description {
@ -48,12 +49,13 @@ func (e *handlersImpl) GetAll() []*api.Description {
}
}
func NewHandlers(log logger.Logger, cfg *config.Config, responser *api.Responser, cards Cards) (api.Handlers, error) {
func NewHandlers(log logger.Logger, cfg *config.Config, responser *api.Responser, cards Cards, validator *validator.Validate) (api.Handlers, error) {
return &handlersImpl{
log: log,
responser: responser,
jsonSizeLimit: cfg.JsonSizeLimit,
cards: cards,
validator: validator,
}, nil
}
@ -74,9 +76,7 @@ func (e *handlersImpl) createCard(w http.ResponseWriter, r *http.Request) {
return
}
validate := validator.New()
err = validate.Struct(req)
if err != nil {
if err = e.validator.Struct(req); err != nil {
e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize)
return
}
@ -256,9 +256,7 @@ func (e *handlersImpl) updateCard(w http.ResponseWriter, r *http.Request) {
return
}
validate := validator.New()
err = validate.Struct(req)
if err != nil {
if err = e.validator.Struct(req); err != nil {
e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize)
return
}

View file

@ -36,6 +36,7 @@ type handlersImpl struct {
responser *api.Responser
jsonSizeLimit int64
charts Charts
validator *validator.Validate
}
func (e *handlersImpl) GetAll() []*api.Description {
@ -45,12 +46,13 @@ func (e *handlersImpl) GetAll() []*api.Description {
}
}
func NewHandlers(log logger.Logger, cfg *config.Config, responser *api.Responser, charts Charts) (api.Handlers, error) {
func NewHandlers(log logger.Logger, cfg *config.Config, responser *api.Responser, charts Charts, validator *validator.Validate) (api.Handlers, error) {
return &handlersImpl{
log: log,
responser: responser,
jsonSizeLimit: cfg.JsonSizeLimit,
charts: charts,
validator: validator,
}, nil
}
@ -77,9 +79,7 @@ func (e *handlersImpl) getCardChartData(w http.ResponseWriter, r *http.Request)
return
}
validate := validator.New()
err = validate.Struct(req)
if err != nil {
if err = e.validator.Struct(req); err != nil {
e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize)
return
}

View file

@ -36,6 +36,7 @@ type handlersImpl struct {
responser *api.Responser
jsonSizeLimit int64
dashboards Dashboards
validator *validator.Validate
}
func (e *handlersImpl) GetAll() []*api.Description {
@ -50,12 +51,13 @@ func (e *handlersImpl) GetAll() []*api.Description {
}
}
func NewHandlers(log logger.Logger, cfg *config.Config, responser *api.Responser, dashboards Dashboards) (api.Handlers, error) {
func NewHandlers(log logger.Logger, cfg *config.Config, responser *api.Responser, dashboards Dashboards, validator *validator.Validate) (api.Handlers, error) {
return &handlersImpl{
log: log,
responser: responser,
jsonSizeLimit: cfg.JsonSizeLimit,
dashboards: dashboards,
validator: validator,
}, nil
}
@ -76,9 +78,7 @@ func (e *handlersImpl) createDashboard(w http.ResponseWriter, r *http.Request) {
return
}
validate := validator.New()
err = validate.Struct(req)
if err != nil {
if err = e.validator.Struct(req); err != nil {
e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize)
return
}
@ -279,9 +279,7 @@ func (e *handlersImpl) addCardToDashboard(w http.ResponseWriter, r *http.Request
return
}
validate := validator.New()
err = validate.Struct(req)
if err != nil {
if err = e.validator.Struct(req); err != nil {
e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize)
return
}