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"` } type CommentRequest struct { Message string `json:"message"` } 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"` // } type ProductsCreateRequest struct { Title string `json:"title" validate:"required"` Variant *string `json:"variant"` Price *string `json:"price"` ThumbnailPath *string `json:"thumbnail_path"` Colors []ProductColorRequest `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, // } // } 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 } type ProductColorRequest struct { Name string `json:"name"` ImagePath *string `json:"image_path"` }