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

View file

@ -36,6 +36,7 @@ type handlersImpl struct {
responser *api.Responser responser *api.Responser
jsonSizeLimit int64 jsonSizeLimit int64
cards Cards cards Cards
validator *validator.Validate
} }
func (e *handlersImpl) GetAll() []*api.Description { 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{ return &handlersImpl{
log: log, log: log,
responser: responser, responser: responser,
jsonSizeLimit: cfg.JsonSizeLimit, jsonSizeLimit: cfg.JsonSizeLimit,
cards: cards, cards: cards,
validator: validator,
}, nil }, nil
} }
@ -74,9 +76,7 @@ func (e *handlersImpl) createCard(w http.ResponseWriter, r *http.Request) {
return return
} }
validate := validator.New() if err = e.validator.Struct(req); err != nil {
err = validate.Struct(req)
if err != nil {
e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize) e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize)
return return
} }
@ -256,9 +256,7 @@ func (e *handlersImpl) updateCard(w http.ResponseWriter, r *http.Request) {
return return
} }
validate := validator.New() if err = e.validator.Struct(req); err != nil {
err = validate.Struct(req)
if err != nil {
e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize) e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize)
return return
} }

View file

@ -36,6 +36,7 @@ type handlersImpl struct {
responser *api.Responser responser *api.Responser
jsonSizeLimit int64 jsonSizeLimit int64
charts Charts charts Charts
validator *validator.Validate
} }
func (e *handlersImpl) GetAll() []*api.Description { 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{ return &handlersImpl{
log: log, log: log,
responser: responser, responser: responser,
jsonSizeLimit: cfg.JsonSizeLimit, jsonSizeLimit: cfg.JsonSizeLimit,
charts: charts, charts: charts,
validator: validator,
}, nil }, nil
} }
@ -77,9 +79,7 @@ func (e *handlersImpl) getCardChartData(w http.ResponseWriter, r *http.Request)
return return
} }
validate := validator.New() if err = e.validator.Struct(req); err != nil {
err = validate.Struct(req)
if err != nil {
e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize) e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize)
return return
} }

View file

@ -36,6 +36,7 @@ type handlersImpl struct {
responser *api.Responser responser *api.Responser
jsonSizeLimit int64 jsonSizeLimit int64
dashboards Dashboards dashboards Dashboards
validator *validator.Validate
} }
func (e *handlersImpl) GetAll() []*api.Description { 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{ return &handlersImpl{
log: log, log: log,
responser: responser, responser: responser,
jsonSizeLimit: cfg.JsonSizeLimit, jsonSizeLimit: cfg.JsonSizeLimit,
dashboards: dashboards, dashboards: dashboards,
validator: validator,
}, nil }, nil
} }
@ -76,9 +78,7 @@ func (e *handlersImpl) createDashboard(w http.ResponseWriter, r *http.Request) {
return return
} }
validate := validator.New() if err = e.validator.Struct(req); err != nil {
err = validate.Struct(req)
if err != nil {
e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize) e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize)
return return
} }
@ -279,9 +279,7 @@ func (e *handlersImpl) addCardToDashboard(w http.ResponseWriter, r *http.Request
return return
} }
validate := validator.New() if err = e.validator.Struct(req); err != nil {
err = validate.Struct(req)
if err != nil {
e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize) e.responser.ResponseWithError(e.log, r.Context(), w, http.StatusBadRequest, err, startTime, r.URL.Path, bodySize)
return return
} }