package validators import ( "file-system/internal/api/requests" "file-system/internal/common" ) type NewFeaturesValidator struct{} func NewNewFeaturesValidator() *NewFeaturesValidator { return &NewFeaturesValidator{} } func (v *NewFeaturesValidator) ValidateListFiles(req *requests.ListFilesRequest) error { if req.BucketName == "" { return common.NewBusinessException("Bucket name is required") } if req.MaxKeys <= 0 { req.MaxKeys = 10 // default } return nil } func (v *NewFeaturesValidator) ValidatePreview(req *requests.GetFilePreviewRequest) error { if req.BucketName == "" || req.ObjectKey == "" { return common.NewBusinessException("Bucket name and Object key are required") } return nil } func (v *NewFeaturesValidator) ValidateInitMultipart(req *requests.InitMultipartRequest) error { if req.BucketName == "" || req.ObjectKey == "" { return common.NewBusinessException("Bucket name and Object key are required") } return nil } func (v *NewFeaturesValidator) ValidateUploadPart(req *requests.UploadPartRequest) error { if req.BucketName == "" || req.ObjectKey == "" || req.UploadId == "" || req.PartNumber <= 0 || req.File == nil { return common.NewBusinessException("Missing required fields for upload part") } return nil } func (v *NewFeaturesValidator) ValidateCompleteMultipart(req *requests.CompleteMultipartRequest) error { if req.BucketName == "" || req.ObjectKey == "" || req.UploadId == "" || len(req.Parts) == 0 { return common.NewBusinessException("Missing required fields for completion") } return nil } func (v *NewFeaturesValidator) ValidateDeleteFile(req *requests.DeleteFileRequest) error { if req.BucketName == "" || req.ObjectKey == "" { return common.NewBusinessException("Bucket name and Object key are required") } return nil }