6104f592eb
Split monolithic docker.py into focused modules: - docker/compose.py — compose generation, execute_compose_command, volume sorting - docker/container.py — container status, IP, logs, network, port finding - docker/config_staging.py — instance dir, env file, config file staging - docker/tunnel.py — cloudflared tunnel lifecycle (moved from services/tunnel.py) - docker/__init__.py — re-exports all public symbols for backward compatibility - services/tunnel.py — thin re-export wrapper for backward compatibility Also includes schema extraction files created in prior work: - schemas/config/config_profile.py - schemas/project/*.py - schemas/system/health.py - schemas/tool/*.py - schemas/user/*.py All existing imports like 'from src.services.docker import X' and 'from src.services.tunnel import X' continue to work unchanged. Quality gates: py_compile passed, ruff passed, import test passed.
48 lines
977 B
Python
48 lines
977 B
Python
"""Git repository request/response schemas."""
|
|
|
|
import uuid
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
|
|
|
|
class GitRepositoryCreate(BaseModel):
|
|
name: str
|
|
remote_url: str | None = None
|
|
force_original_url: bool = False
|
|
ssh_key_id: str | None = None
|
|
|
|
|
|
class URLParseRequest(BaseModel):
|
|
url: str
|
|
|
|
|
|
class URLParseResponse(BaseModel):
|
|
original_url: str
|
|
base_url: str | None
|
|
is_valid_clone_url: bool
|
|
needs_parsing: bool
|
|
host: str | None
|
|
message: str
|
|
error_code: str | None
|
|
|
|
|
|
class GitRepositoryResponse(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
id: uuid.UUID
|
|
name: str
|
|
path: str
|
|
project_id: uuid.UUID | None
|
|
owner_id: uuid.UUID
|
|
is_mirror: bool
|
|
remote_url: str | None
|
|
last_push: datetime | None
|
|
ssh_key_id: uuid.UUID | None
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class UpdateSSHKeyRequest(BaseModel):
|
|
ssh_key_id: str | None = None
|