nex_docus/backend/app/schemas/file.py

48 lines
1.6 KiB
Python
Raw Normal View History

2025-12-20 11:18:59 +00:00
"""
文件系统操作相关的 Pydantic Schema
"""
from pydantic import BaseModel, Field
from typing import Optional, List
class FileTreeNode(BaseModel):
"""文件树节点 Schema"""
title: str = Field(..., description="节点标题(文件/文件夹名)")
key: str = Field(..., description="节点唯一键(相对路径)")
isLeaf: bool = Field(..., description="是否叶子节点")
children: Optional[List['FileTreeNode']] = Field(None, description="子节点")
class Config:
from_attributes = True
# 支持递归引用
FileTreeNode.model_rebuild()
class FileContentRequest(BaseModel):
"""文件内容请求 Schema"""
path: str = Field(..., description="文件相对路径")
class FileSaveRequest(BaseModel):
"""文件保存请求 Schema"""
path: str = Field(..., description="文件相对路径")
content: str = Field(..., description="文件内容")
class FileOperateRequest(BaseModel):
"""文件操作请求 Schema"""
action: str = Field(..., description="操作类型rename|delete|create_dir|create_file")
path: str = Field(..., description="当前路径")
new_path: Optional[str] = Field(None, description="新路径(重命名时使用)")
content: Optional[str] = Field(None, description="文件内容(创建文件时使用)")
class FileUploadResponse(BaseModel):
"""文件上传响应 Schema"""
filename: str = Field(..., description="文件名")
path: str = Field(..., description="文件相对路径")
url: str = Field(..., description="文件访问URL")
size: int = Field(..., description="文件大小(字节)")