package request import ( "jaecoo-be/app/database/entity" "jaecoo-be/utils/paginator" "strconv" "time" ) type CampaignFilesQueryRequest struct { CampaignID *uint `json:"campaignId"` Type *string `json:"type"` Pagination *paginator.Pagination `json:"pagination"` } type CampaignFilesCreateRequest struct { CampaignID uint `json:"campaignId" validate:"required"` Type string `json:"type" validate:"required"` // url, file FileURL *string `json:"fileUrl"` ExternalURL *string `json:"externalUrl"` IsDraft *bool `json:"isDraft"` IsPublish *bool `json:"isPublish"` } func (req CampaignFilesCreateRequest) ToEntity() *entity.CampaignFiles { isDraft := false isPublish := false if req.IsDraft != nil { isDraft = *req.IsDraft } if req.IsPublish != nil { isPublish = *req.IsPublish } return &entity.CampaignFiles{ CampaignID: req.CampaignID, Type: req.Type, FileURL: req.FileURL, ExternalURL: req.ExternalURL, IsDraft: &isDraft, IsPublish: &isPublish, CreatedAt: time.Now(), UpdatedAt: time.Now(), } } type CampaignFilesUpdateRequest struct { Type string `json:"type" validate:"required"` FileURL *string `json:"fileUrl"` ExternalURL *string `json:"externalUrl"` IsDraft *bool `json:"isDraft"` IsPublish *bool `json:"isPublish"` } func (req CampaignFilesUpdateRequest) ToEntity() *entity.CampaignFiles { return &entity.CampaignFiles{ Type: req.Type, FileURL: req.FileURL, ExternalURL: req.ExternalURL, IsDraft: req.IsDraft, IsPublish: req.IsPublish, UpdatedAt: time.Now(), } } type CampaignFilesQueryRequestContext struct { CampaignID string `json:"campaignId"` Type string `json:"type"` } func (req CampaignFilesQueryRequestContext) ToParamRequest() CampaignFilesQueryRequest { var request CampaignFilesQueryRequest if campaignIDStr := req.CampaignID; campaignIDStr != "" { campaignID, err := strconv.ParseUint(campaignIDStr, 10, 32) if err == nil { campaignIDUint := uint(campaignID) request.CampaignID = &campaignIDUint } } if typeStr := req.Type; typeStr != "" { request.Type = &typeStr } return request }