init
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
"""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
|
||||
|
||||
Reference in New Issue
Block a user