package request import ( "narasi-ahli-be/app/database/entity" "narasi-ahli-be/utils/paginator" "strconv" "time" ) type AiChatFilesGeneric interface { ToEntity() } type AiChatFilesQueryRequest struct { MessageId *int `json:"messageId"` FileName *string `json:"fileName"` StatusId *int `json:"statusId"` IsPublish *bool `json:"isPublish"` Pagination *paginator.Pagination `json:"pagination"` } type AiChatFilesCreateRequest struct { MessageId uint `json:"messageId" validate:"required"` StatusId int `json:"statusId" validate:"required"` UploadId *string `json:"uploadId"` FilePath *string `json:"filePath"` FileUrl *string `json:"fileUrl"` FileName *string `json:"fileName"` FileThumbnail *string `json:"fileThumbnail"` FileAlt *string `json:"fileAlt"` WidthPixel *string `json:"widthPixel"` HeightPixel *string `json:"heightPixel"` Size *string `json:"size"` } func (req AiChatFilesCreateRequest) ToEntity() *entity.AiChatFiles { return &entity.AiChatFiles{ MessageId: req.MessageId, UploadID: req.UploadId, FilePath: req.FilePath, FileUrl: req.FileUrl, FileName: req.FileName, FileThumbnail: req.FileThumbnail, FileAlt: req.FileAlt, Size: req.Size, } } type AiChatFilesUpdateRequest struct { ID uint `json:"id" validate:"required"` MessageId uint `json:"messageId" validate:"required"` StatusId int `json:"statusId" validate:"required"` FilePath *string `json:"filePath"` FileUrl *string `json:"fileUrl"` FileName *string `json:"fileName"` FileThumbnail *string `json:"fileThumbnail"` FileAlt *string `json:"fileAlt"` WidthPixel *string `json:"widthPixel"` HeightPixel *string `json:"heightPixel"` Size *string `json:"size"` IsPublish *bool `json:"isPublish" validate:"required"` PublishedAt *time.Time `json:"publishedAt" validate:"required"` } func (req AiChatFilesUpdateRequest) ToEntity() *entity.AiChatFiles { return &entity.AiChatFiles{ ID: req.ID, MessageId: req.MessageId, FilePath: req.FilePath, FileUrl: req.FileUrl, FileName: req.FileName, FileThumbnail: req.FileThumbnail, FileAlt: req.FileAlt, Size: req.Size, UpdatedAt: time.Now(), } } type AiChatFilesQueryRequestContext struct { MessageId string `json:"messageId"` FileName string `json:"fileName"` StatusId string `json:"statusId"` IsPublish string `json:"isPublish"` } func (req AiChatFilesQueryRequestContext) ToParamRequest() AiChatFilesQueryRequest { var request AiChatFilesQueryRequest if messageIdStr := req.MessageId; messageIdStr != "" { messageId, err := strconv.Atoi(messageIdStr) if err == nil { request.MessageId = &messageId } } if fileName := req.FileName; fileName != "" { request.FileName = &fileName } if statusIdStr := req.StatusId; statusIdStr != "" { statusId, err := strconv.Atoi(statusIdStr) if err == nil { request.StatusId = &statusId } } if isPublishStr := req.IsPublish; isPublishStr != "" { isPublish, err := strconv.ParseBool(isPublishStr) if err == nil { request.IsPublish = &isPublish } } return request }