33 lines
924 B
Python
33 lines
924 B
Python
"""仅接受用户可编辑字段;租户、上传人和存储对象由服务端生成。"""
|
|
from typing import List
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
|
|
|
|
class _Body(BaseModel):
|
|
model_config = ConfigDict(extra='forbid')
|
|
|
|
|
|
class FolderUpdateBody(_Body):
|
|
name: str = Field(min_length=1, max_length=120)
|
|
|
|
@field_validator('name')
|
|
@classmethod
|
|
def valid_name(cls, value):
|
|
value = value.strip()
|
|
if not value or value in ('.', '..') or any(ord(c) < 32 or c in '/\\' for c in value):
|
|
raise ValueError('文件夹名称不能为空或包含路径分隔符/控制字符')
|
|
return value
|
|
|
|
|
|
class FolderCreateBody(FolderUpdateBody):
|
|
parentId: str = Field(default='', max_length=64)
|
|
|
|
|
|
class ShareBody(_Body):
|
|
userIds: List[str] = Field(max_length=500)
|
|
|
|
|
|
class DeleteFilesBody(_Body):
|
|
ids: List[str] = Field(min_length=1, max_length=100)
|