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

87 lines
2.2 KiB
Go

package request
import (
"campaign-pool-be/app/database/entity"
"campaign-pool-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
}