Skip to content

Commit

Permalink
refactor: add validate to command/query level
Browse files Browse the repository at this point in the history
  • Loading branch information
Alan-maqing committed Aug 29, 2023
1 parent 99c488a commit 747477b
Show file tree
Hide file tree
Showing 12 changed files with 81 additions and 147 deletions.
2 changes: 0 additions & 2 deletions internal/pkg/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ require (
)

require (
dario.cat/mergo v1.0.0 // indirect
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
github.com/ClickHouse/ch-go v0.55.0 // indirect
github.com/ClickHouse/clickhouse-go/v2 v2.9.1 // indirect
Expand Down Expand Up @@ -180,7 +179,6 @@ require (
golang.org/x/text v0.9.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/tools v0.7.0 // indirect
google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 // indirect
google.golang.org/protobuf v1.30.0 // indirect
gopkg.in/ini.v1 v1.51.0 // indirect
Expand Down
45 changes: 8 additions & 37 deletions internal/pkg/go.sum

Large diffs are not rendered by default.

4 changes: 1 addition & 3 deletions internal/services/catalog_read_service/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ require (
)

require (
dario.cat/mergo v1.0.0 // indirect
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
github.com/EventStore/EventStore-Client-Go v1.0.2 // indirect
github.com/KyleBanks/depth v1.2.1 // indirect
Expand Down Expand Up @@ -64,6 +63,7 @@ require (
github.com/go-openapi/jsonreference v0.19.6 // indirect
github.com/go-openapi/spec v0.20.4 // indirect
github.com/go-openapi/swag v0.21.1 // indirect
github.com/go-ozzo/ozzo-validation v3.6.0+incompatible // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/goccy/go-json v0.10.2 // indirect
Expand Down Expand Up @@ -120,7 +120,6 @@ require (
github.com/opencontainers/image-spec v1.1.0-rc4 // indirect
github.com/opencontainers/runc v1.1.5 // indirect
github.com/openzipkin/zipkin-go v0.4.1 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
github.com/pelletier/go-toml/v2 v2.0.8 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
Expand Down Expand Up @@ -182,7 +181,6 @@ require (
golang.org/x/text v0.9.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/tools v0.7.0 // indirect
google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 // indirect
google.golang.org/grpc v1.57.0 // indirect
google.golang.org/protobuf v1.30.0 // indirect
Expand Down
63 changes: 14 additions & 49 deletions internal/services/catalog_read_service/go.sum

Large diffs are not rendered by default.

6 changes: 2 additions & 4 deletions internal/services/catalog_write_service/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ require (
emperror.dev/errors v0.8.1
github.com/brianvoe/gofakeit/v6 v6.18.0
github.com/gavv/httpexpect/v2 v2.3.1
github.com/go-ozzo/ozzo-validation v3.6.0+incompatible
github.com/go-playground/validator v9.31.0+incompatible
github.com/goccy/go-json v0.10.2
github.com/iancoleman/strcase v0.2.0
github.com/labstack/echo/v4 v4.10.2
github.com/lib/pq v1.10.9
github.com/mehdihadeli/go-ecommerce-microservices/internal/pkg v0.0.0-00010101000000-000000000000
github.com/mehdihadeli/go-ecommerce-microservices/internal/pkg v0.0.0-20230827180923-99c488ade993
github.com/mehdihadeli/go-mediatr v1.1.10
github.com/michaelklishin/rabbit-hole v1.5.0
github.com/satori/go.uuid v1.2.0
Expand All @@ -33,7 +34,6 @@ require (
)

require (
dario.cat/mergo v1.0.0 // indirect
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
github.com/ClickHouse/ch-go v0.55.0 // indirect
github.com/ClickHouse/clickhouse-go/v2 v2.9.1 // indirect
Expand Down Expand Up @@ -194,7 +194,6 @@ require (
github.com/magiconair/properties v1.8.7 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
github.com/prometheus/client_golang v1.15.1 // indirect
github.com/prometheus/client_model v0.4.0 // indirect
github.com/prometheus/procfs v0.9.0 // indirect
Expand All @@ -204,7 +203,6 @@ require (
github.com/spf13/pflag v1.0.5 // indirect
github.com/subosito/gotenv v1.4.2 // indirect
golang.org/x/text v0.9.0 // indirect
google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54 // indirect
google.golang.org/protobuf v1.30.0
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
Expand Down
51 changes: 12 additions & 39 deletions internal/services/catalog_write_service/go.sum

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package createProductCommand

import (
"time"

"github.com/mehdihadeli/go-ecommerce-microservices/internal/pkg/utils/validator"
validation "github.com/go-ozzo/ozzo-validation"
uuid "github.com/satori/go.uuid"
"time"
)

// https://echo.labstack.com/guide/request/
Expand All @@ -26,10 +25,19 @@ func NewCreateProduct(name string, description string, price float64) (*CreatePr
Price: price,
CreatedAt: time.Now(),
}
err := validator.Validate(command)
err := command.Validate()
if err != nil {
return nil, err
}

return command, nil
}

func (c *CreateProduct) Validate() error {
return validation.ValidateStruct(c,
validation.Field(&c.ProductID, validation.Required),
validation.Field(&c.Name, validation.Required, validation.Length(0, 255)),
validation.Field(&c.Description, validation.Required, validation.Length(0, 5000)),
validation.Field(&c.Price, validation.Required, validation.Min(0).Exclusive()),
validation.Field(&c.CreatedAt, validation.Required),
)
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package commands

import (
"github.com/mehdihadeli/go-ecommerce-microservices/internal/pkg/utils/validator"
validation "github.com/go-ozzo/ozzo-validation"
uuid "github.com/satori/go.uuid"
)

Expand All @@ -11,10 +11,14 @@ type DeleteProduct struct {

func NewDeleteProduct(productID uuid.UUID) (*DeleteProduct, error) {
command := &DeleteProduct{ProductID: productID}
err := validator.Validate(command)
err := command.Validate()
if err != nil {
return nil, err
}

return command, nil
}

func (p *DeleteProduct) Validate() error {
return validation.ValidateStruct(p, validation.Field(&p.ProductID, validation.Required))
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package getProductByIdQuery

import (
"github.com/mehdihadeli/go-ecommerce-microservices/internal/pkg/utils/validator"
validation "github.com/go-ozzo/ozzo-validation"
uuid "github.com/satori/go.uuid"
)

Expand All @@ -14,10 +14,14 @@ type GetProductById struct {

func NewGetProductById(productId uuid.UUID) (*GetProductById, error) {
query := &GetProductById{ProductID: productId}
err := validator.Validate(query)
err := query.Validate()
if err != nil {
return nil, err
}

return query, nil
}

func (p *GetProductById) Validate() error {
return validation.ValidateStruct(p, validation.Field(&p.ProductID, validation.Required))
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ type GetProducts struct {
func NewGetProducts(query *utils.ListQuery) (*GetProducts, error) {
q := &GetProducts{ListQuery: query}

// TODO
// since there is no validate tag on ListQuery,
// maybe we should just remove the next line ?
err := validator.Validate(q)
if err != nil {
return nil, err
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package queries

import (
validation "github.com/go-ozzo/ozzo-validation"
"github.com/mehdihadeli/go-ecommerce-microservices/internal/pkg/utils"
"github.com/mehdihadeli/go-ecommerce-microservices/internal/pkg/utils/validator"
)

type SearchProducts struct {
Expand All @@ -16,10 +16,14 @@ func NewSearchProducts(searchText string, query *utils.ListQuery) (*SearchProduc
ListQuery: query,
}

err := validator.Validate(command)
err := command.Validate()
if err != nil {
return nil, err
}

return command, nil
}

func (p *SearchProducts) Validate() error {
return validation.ValidateStruct(p, validation.Field(&p.SearchText, validation.Required))
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package commands

import (
validation "github.com/go-ozzo/ozzo-validation"
"time"

"github.com/mehdihadeli/go-ecommerce-microservices/internal/pkg/utils/validator"
uuid "github.com/satori/go.uuid"
)

Expand All @@ -23,10 +23,18 @@ func NewUpdateProduct(productID uuid.UUID, name string, description string, pric
Price: price,
UpdatedAt: time.Now(),
}
err := validator.Validate(command)
err := command.Validate()
if err != nil {
return nil, err
}

return command, nil
}

func (p *UpdateProduct) Validate() error {
return validation.ValidateStruct(p, validation.Field(p.ProductID, validation.Required),
validation.Field(&p.Name, validation.Required, validation.Length(0, 255)),
validation.Field(&p.Description, validation.Required, validation.Length(0, 5000)),
validation.Field(&p.Price, validation.Required, validation.Min(0)),
validation.Field(&p.UpdatedAt, validation.Required))
}

0 comments on commit 747477b

Please sign in to comment.