nex_docus/backend/app/schemas/file.py

48 lines
1.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"""
文件系统操作相关的 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="文件大小(字节)")