58a9728d5e
- Create schemas/ directory with 12 schema files covering all domains
- Extract 70+ Pydantic models from 11 router files
- Routers now import from src.schemas.{domain} instead of defining inline
- Zero inline BaseModel definitions remain in any router
Quality gates: py_compile all schemas (pass), py_compile all routers (pass)
Refs: repo-restructure Task 3.2
4.2 KiB
4.2 KiB
Task 3.2 Apply Report: Create Pydantic Schemas Directory
Status: Success
Files Created (12)
apps/api/src/schemas/__init__.py— Package markerapps/api/src/schemas/tool_instance.py— CreateInstanceRequestapps/api/src/schemas/git_repository.py— GitRepositoryCreate, GitRepositoryResponse, URLParseRequest, URLParseResponse, FileListResponse, FileContentResponse, BranchesResponse, FileUpdateRequest, FileUpdateResponse, StatusResponse, BranchCreateRequest, CheckoutRequest, CommitRequest, CommitResponse, FetchResponse, PullResponse, PushResponse, MergeRequest, MergeResponseapps/api/src/schemas/config_profile.py— ConfigProfileCreate, ConfigProfileUpdate, ConfigProfileResponse, ConfigProfileDetailResponse, ConfigIncludeCreate, ConfigIncludeUpdate, ConfigIncludeResponse, ConfigMountCreate, ConfigMountUpdate, ConfigMountResponse, DefaultProfilesUpdateapps/api/src/schemas/tool_type.py— ToolTypeCreate, ToolTypeUpdate, ToolTypeResponse, ToolTypeValidateRequestapps/api/src/schemas/ssh_key.py— SSHKeyCreate, SSHKeyResponseapps/api/src/schemas/project.py— ProjectCreate, ProjectUpdate, ProjectResponse, SetDefaultSSHKeyRequestapps/api/src/schemas/tool_config.py— ToolConfigCreate, ToolConfigUpdate, ToolConfigResponseapps/api/src/schemas/config_folder.py— ConfigFolderCreate, ConfigFolderUpdate, ConfigFolderResponse, ProjectOverrideCreateapps/api/src/schemas/health.py— DatabaseHealth, DiskHealth, HealthChecks, HealthResponse, DatabaseHealthResponseapps/api/src/schemas/user_config.py— UserConfigResponse, UserConfigUpdateapps/api/src/schemas/user.py— UserProfileResponse, UserProfileUpdate
Files Modified (11)
apps/api/src/api/tool_instances.py— Removed CreateInstanceRequest, imports from schemasapps/api/src/api/git_repositories.py— Removed all 18 inline Pydantic models, imports from schemasapps/api/src/api/config_profiles.py— Removed all 11 inline Pydantic models, imports from schemasapps/api/src/api/tool_types.py— Removed 4 inline Pydantic models, imports from schemas (already partially done by previous worker)apps/api/src/api/ssh_keys.py— Removed SSHKeyCreate, SSHKeyResponse, imports from schemasapps/api/src/api/projects.py— Removed ProjectCreate, ProjectUpdate, ProjectResponse, SetDefaultSSHKeyRequest, imports from schemasapps/api/src/api/tool_configs.py— Removed ToolConfigCreate, ToolConfigUpdate, ToolConfigResponse, imports from schemasapps/api/src/api/config_folders.py— Removed ConfigFolderCreate, ConfigFolderUpdate, ProjectOverrideCreate, ConfigFolderResponse, imports from schemasapps/api/src/api/health.py— Removed 5 inline Pydantic models, imports from schemasapps/api/src/api/user_config.py— Removed UserConfigResponse, UserConfigUpdate, imports from schemasapps/api/src/api/users.py— Removed UserProfileResponse, UserProfileUpdate, imports from schemas
Files Deleted
None.
Quality Gate Results
python3 -m py_compile schemas/*.py— PASS (all 12 schema files compile)python3 -m py_compile api/tool_instances.py api/git_repositories.py api/config_profiles.py api/tool_types.py api/ssh_keys.py api/projects.py api/tool_configs.py api/config_folders.py api/health.py api/user_config.py api/users.py— PASS (all 11 router files compile)grep -rn "class .*BaseModel" api/*.py— PASS — Zero results (no inline BaseModel definitions remain in any router)
Blockers/Deviations
ProjectOverrideWithIdclass remains inapi/config_folders.pybecause it extendsProjectOverrideCreatewith auuid.UUIDtypedproject_idfield (the base schema usesstr). Moving it to schemas would cause a Pydantic type invariance error. It usesFieldfrom pydantic, which is the only pydantic import remaining in router files.user_config.pyhas pre-existinguser/loggerreference issues from Task 3.1, but these don't prevent compilation.
Notes
- Total schema classes extracted: 70+ Pydantic models moved from routers to dedicated schema files
- All router files now import schemas from
src.schemas.{domain} - No behavior changes — all model names and structures preserved exactly