nex_docus/backend/app/schemas/git_repo.py

53 lines
1.6 KiB
Python

"""
Git仓库相关的 Pydantic Schema
"""
from pydantic import BaseModel, Field
from typing import Optional
from datetime import datetime
class GitRepoConfigBase(BaseModel):
name: str = Field(..., max_length=50, description="仓库别名")
repo_url: str = Field(..., max_length=255, description="Git仓库地址")
branch: str = Field("main", max_length=50, description="Git分支")
username: Optional[str] = Field(None, description="Git用户名")
token: Optional[str] = Field(None, description="Git访问令牌")
is_default: int = Field(0, description="是否默认仓库")
class GitRepoCreate(GitRepoConfigBase):
"""创建Git仓库 Schema"""
pass
class GitRepoUpdate(BaseModel):
"""更新Git仓库 Schema"""
name: Optional[str] = None
repo_url: Optional[str] = None
branch: Optional[str] = None
username: Optional[str] = None
token: Optional[str] = None
is_default: Optional[int] = None
class GitRepoTestRequest(BaseModel):
"""Remote connection test payload. repo_id is used to reuse a saved token when editing."""
repo_id: Optional[int] = None
repo_url: Optional[str] = Field(None, max_length=255)
branch: Optional[str] = Field("main", max_length=50)
username: Optional[str] = None
token: Optional[str] = None
class GitRepoResponse(GitRepoConfigBase):
"""Git仓库响应 Schema"""
sync_path: str = Field("", max_length=255, description="最近一次成功同步的目录")
id: int
project_id: int
created_at: datetime
updated_at: datetime
has_token: bool = False
class Config:
from_attributes = True