package request

type PreSignedDto struct {
	FileName    string `json:"fileName" query:"fileName" validate:"required"`
	ContentType string `json:"content_type" query:"content_type" validate:"required"`
	Size        int64  `json:"size" query:"size" validate:"required"`
}

type PreSignedCompleteDto struct {
	TokenID string `json:"token_id" validate:"required"`
}

type SearchMediaDto struct {
	PaginationDto
	Sort     string   `json:"sort" query:"sort" validate:"omitempty,oneof=id created_at updated_at size original_name storage_key mime_type"`
	Search   string   `json:"search" query:"search" validate:"omitempty,min=2,max=200"`
	UserIDs  []string `json:"user_ids" query:"user_ids" validate:"omitempty,dive,uuid"`
	MimeType string   `json:"mime_type" query:"mime_type" validate:"omitempty,max=100"`
	MinSize  *int64   `json:"min_size" query:"min_size" validate:"omitempty,min=0"`
	MaxSize  *int64   `json:"max_size" query:"max_size" validate:"omitempty,min=0,gtefield=MinSize"`
}

type MediaBulkDeleteDto struct {
	MediaIDs   []string `json:"media_ids" validate:"required,dive,uuid"`
}
