""" 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