Refactor code structure for improved readability and maintainability
This commit is contained in:
+113
@@ -0,0 +1,113 @@
|
||||
"""Pydantic models for Gitea API entities."""
|
||||
|
||||
from typing import Optional, Any
|
||||
|
||||
from pydantic import BaseModel, Field, field_validator
|
||||
|
||||
|
||||
class UserModel(BaseModel):
|
||||
login: str = ""
|
||||
id: int = 0
|
||||
avatar_url: Optional[str] = None
|
||||
html_url: Optional[str] = None
|
||||
full_name: Optional[str] = None
|
||||
email: Optional[str] = None
|
||||
username: Optional[str] = None
|
||||
|
||||
|
||||
class LabelModel(BaseModel):
|
||||
id: int = 0
|
||||
name: str = ""
|
||||
color: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
|
||||
|
||||
class RepositoryModel(BaseModel):
|
||||
id: int = 0
|
||||
name: str = ""
|
||||
full_name: str = ""
|
||||
owner: str = ""
|
||||
html_url: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
mirror: bool = False
|
||||
private: bool = False
|
||||
fork: bool = False
|
||||
parent: Optional["RepositoryModel"] = None
|
||||
empty: Optional[bool] = None
|
||||
|
||||
@field_validator("owner", mode="before")
|
||||
@classmethod
|
||||
def validate_owner(cls, v):
|
||||
if isinstance(v, dict):
|
||||
return v.get("login", "")
|
||||
return v
|
||||
|
||||
|
||||
class IssueModel(BaseModel):
|
||||
id: int = 0
|
||||
number: int = 0
|
||||
title: str = ""
|
||||
body: Optional[str] = None
|
||||
state: str = ""
|
||||
user: UserModel = Field(default_factory=UserModel)
|
||||
assignee: Optional[UserModel] = None
|
||||
labels: list[LabelModel] = Field(default_factory=list)
|
||||
created_at: Optional[str] = None
|
||||
updated_at: Optional[str] = None
|
||||
closed_at: Optional[str] = None
|
||||
repository: Optional[RepositoryModel] = None
|
||||
comments: int = 0
|
||||
|
||||
|
||||
class PullRequestModel(BaseModel):
|
||||
id: int = 0
|
||||
number: int = 0
|
||||
title: str = ""
|
||||
body: Optional[str] = None
|
||||
state: str = ""
|
||||
user: UserModel = Field(default_factory=UserModel)
|
||||
assignee: Optional[UserModel] = None
|
||||
created_at: Optional[str] = None
|
||||
updated_at: Optional[str] = None
|
||||
closed_at: Optional[str] = None
|
||||
merged_at: Optional[str] = None
|
||||
head: dict[str, Any] = Field(default_factory=dict)
|
||||
base: dict[str, Any] = Field(default_factory=dict)
|
||||
repository: Optional[RepositoryModel] = None
|
||||
comments: int = 0
|
||||
comments_url: Optional[str] = None
|
||||
diff_url: Optional[str] = None
|
||||
patch_url: Optional[str] = None
|
||||
html_url: Optional[str] = None
|
||||
merged: bool = False
|
||||
requested_reviewers: list[UserModel] = Field(default_factory=list)
|
||||
|
||||
|
||||
class CommentModel(BaseModel):
|
||||
id: int = 0
|
||||
body: str = ""
|
||||
user: UserModel = Field(default_factory=UserModel)
|
||||
created_at: Optional[str] = None
|
||||
updated_at: Optional[str] = None
|
||||
pull_request_url: Optional[str] = None
|
||||
|
||||
|
||||
class PullRequestFileModel(BaseModel):
|
||||
filename: str = ""
|
||||
status: str = ""
|
||||
additions: int = 0
|
||||
deletions: int = 0
|
||||
changes: int = 0
|
||||
blob_url: Optional[str] = None
|
||||
raw_url: Optional[str] = None
|
||||
patch: Optional[str] = None
|
||||
|
||||
|
||||
class GiteaConfig(BaseModel):
|
||||
model_config = {"extra": "allow", "populate_by_name": True}
|
||||
|
||||
base_url: str
|
||||
token: str
|
||||
repos_root: str
|
||||
model_id: str = "qwen/qwen3.6-35b-a3b"
|
||||
max_retries: int = 2
|
||||
Reference in New Issue
Block a user