jaecoo-be/app/module/products/request/products.request.go

98 lines
2.3 KiB
Go

package request
import (
"encoding/json"
"jaecoo-be/app/database/entity"
"jaecoo-be/utils/paginator"
)
type ProductsQueryRequest struct {
Title *string `json:"title"`
Variant *string `json:"variant"`
Status *string `json:"status"`
Pagination *paginator.Pagination `json:"pagination"`
}
type ProductsQueryRequestContext struct {
Title string `json:"title"`
Variant string `json:"variant"`
Status string `json:"status"`
}
func (req ProductsQueryRequestContext) ToParamRequest() ProductsQueryRequest {
var request ProductsQueryRequest
if title := req.Title; title != "" {
request.Title = &title
}
if variant := req.Variant; variant != "" {
request.Variant = &variant
}
if status := req.Status; status != "" {
request.Status = &status
}
return request
}
type ProductsCreateRequest struct {
Title string `json:"title" validate:"required"`
Variant *string `json:"variant"`
Price *string `json:"price"`
ThumbnailPath *string `json:"thumbnail_path"`
Colors []string `json:"colors"`
Status *string `json:"status"`
}
func (req ProductsCreateRequest) ToEntity() *entity.Products {
colorsJSON, _ := json.Marshal(req.Colors)
colorsStr := string(colorsJSON)
if colorsStr == "null" {
colorsStr = ""
}
return &entity.Products{
Title: req.Title,
Variant: req.Variant,
Price: req.Price,
ThumbnailPath: req.ThumbnailPath,
Colors: &colorsStr,
Status: req.Status,
}
}
type ProductsUpdateRequest struct {
Title *string `json:"title"`
Variant *string `json:"variant"`
Price *string `json:"price"`
ThumbnailPath *string `json:"thumbnail_path"`
Colors []string `json:"colors"`
Status *string `json:"status"`
IsActive *bool `json:"is_active"`
}
func (req ProductsUpdateRequest) ToEntity() *entity.Products {
colorsJSON, _ := json.Marshal(req.Colors)
colorsStr := string(colorsJSON)
if colorsStr == "null" {
colorsStr = ""
}
return &entity.Products{
Title: getStringValue(req.Title),
Variant: req.Variant,
Price: req.Price,
ThumbnailPath: req.ThumbnailPath,
Colors: &colorsStr,
Status: req.Status,
IsActive: req.IsActive,
}
}
func getStringValue(s *string) string {
if s == nil {
return ""
}
return *s
}