refactor: extract Pydantic schemas into schemas/ subpackages

Extract inline Pydantic models from 9 API routers into dedicated
schema modules under schemas/:

- schemas/tool/tool_type.py — ToolTypeCreate, ToolTypeUpdate, etc.
- schemas/tool/tool_instance.py — CreateInstanceRequest, StartInstanceRequest
- schemas/config/config_profile.py — ConfigProfileCreate, ConfigProfileUpdate,
  ConfigProfileResponse, DefaultProfilesUpdate, ValidateGitUrlRequest, etc.
- schemas/system/health.py — DatabaseHealth, DiskHealth, HealthResponse, etc.
- schemas/user/user.py — UserProfileResponse, UserProfileUpdate
- schemas/user/user_config.py — UserConfigResponse, UserConfigUpdate
- schemas/project/project.py — ProjectCreate, ProjectUpdate, etc.
- schemas/project/ssh_key.py — SSHKeyCreate, SSHKeyResponse, etc.
- schemas/project/git_repository.py — GitRepositoryCreate, etc.

API routers now import from src.schemas.* instead of defining inline.
Net change: -548 lines across 16 files.

Quality gates: py_compile passed, ruff passed on all 18 files.
This commit is contained in:
2026-06-04 12:15:26 +02:00
parent 6104f592eb
commit 8816ee02ce
16 changed files with 214 additions and 752 deletions
@@ -1,7 +1,6 @@
"""Config profile request/response schemas."""
import uuid
from typing import Any
from pydantic import BaseModel, Field, field_validator, model_validator
@@ -13,8 +12,8 @@ def _validate_uuid(v: str | None) -> str | None:
return v
try:
uuid.UUID(v)
except ValueError:
raise ValueError(f"Invalid UUID: {v}")
except ValueError as exc:
raise ValueError(f"Invalid UUID: {v}") from exc
return v
@@ -236,8 +235,8 @@ class ConfigProfileIncludeUpdate(BaseModel):
for item in v:
try:
uuid.UUID(item)
except ValueError:
raise ValueError(f"Invalid UUID in includes: {item}")
except ValueError as exc:
raise ValueError(f"Invalid UUID in includes: {item}") from exc
return v