package request

type FileManagerFolderCreateAttributes struct {
	ParentID *string `json:"parent_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	Name     string  `json:"name" validate:"required" example:"operations"`
}

type FileManagerFolderCreateData struct {
	Type       string                            `json:"type" validate:"required,oneof=file_manager_folder_create file_manager_folder" example:"file_manager_folder_create"`
	Attributes FileManagerFolderCreateAttributes `json:"attributes" validate:"required"`
}

type FileManagerFolderCreateRequest struct {
	Data FileManagerFolderCreateData `json:"data" validate:"required"`
}

type FileManagerFolderUpdateAttributes struct {
	Name     *string `json:"name,omitempty" example:"operations-updated"`
	ParentID *string `json:"parent_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
}

type FileManagerFolderUpdateData struct {
	Type       string                            `json:"type" validate:"required,oneof=file_manager_folder_update file_manager_folder" example:"file_manager_folder_update"`
	ID         string                            `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	Attributes FileManagerFolderUpdateAttributes `json:"attributes" validate:"required"`
}

type FileManagerFolderUpdateRequest struct {
	Data FileManagerFolderUpdateData `json:"data" validate:"required"`
}

type FileManagerNodeMoveItem struct {
	UUID                  string  `json:"uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
	DestinationFolderUUID *string `json:"destination_folder_uuid" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
}

type FileManagerNodeMoveBulkRequest struct {
	Data []FileManagerNodeMoveItem `json:"data" validate:"required,min=1"`
}

type FileManagerNodePurgeItem struct {
	UUID string `json:"uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
}

type FileManagerNodePurgeBulkRequest struct {
	Data []FileManagerNodePurgeItem `json:"data" validate:"required,min=1"`
}
