Primakov Alexandr Alexandrovich 09cdd06307 init
2025-10-12 23:15:09 +03:00

50 lines
1.6 KiB
Python

"""Repository schemas"""
from pydantic import BaseModel, Field, HttpUrl
from typing import Optional, Dict, Any, List
from datetime import datetime
from app.models.repository import PlatformEnum
class RepositoryBase(BaseModel):
"""Base repository schema"""
name: str = Field(..., description="Repository name")
platform: PlatformEnum = Field(..., description="Git platform")
url: str = Field(..., description="Repository URL")
config: Optional[Dict[str, Any]] = Field(default_factory=dict, description="Review configuration")
class RepositoryCreate(RepositoryBase):
"""Schema for creating repository"""
api_token: Optional[str] = Field(None, description="API token for Git platform (optional, uses master token if not set)")
webhook_secret: Optional[str] = Field(None, description="Webhook secret (generated if not provided)")
class RepositoryUpdate(BaseModel):
"""Schema for updating repository"""
name: Optional[str] = None
url: Optional[str] = None
api_token: Optional[str] = None
webhook_secret: Optional[str] = None
config: Optional[Dict[str, Any]] = None
is_active: Optional[bool] = None
class RepositoryResponse(RepositoryBase):
"""Schema for repository response"""
id: int
is_active: bool
created_at: datetime
updated_at: datetime
webhook_url: str = Field(..., description="Webhook URL for this repository")
class Config:
from_attributes = True
class RepositoryList(BaseModel):
"""Schema for repository list response"""
items: List[RepositoryResponse]
total: int