init
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
"""Base service for Git platforms"""
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import List, Dict, Any, Optional
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
@dataclass
|
||||
class FileChange:
|
||||
"""Represents a changed file in PR"""
|
||||
filename: str
|
||||
status: str # added, modified, removed
|
||||
additions: int
|
||||
deletions: int
|
||||
patch: Optional[str] = None
|
||||
content: Optional[str] = None
|
||||
|
||||
|
||||
@dataclass
|
||||
class PRInfo:
|
||||
"""Pull request information"""
|
||||
number: int
|
||||
title: str
|
||||
description: str
|
||||
author: str
|
||||
source_branch: str
|
||||
target_branch: str
|
||||
url: str
|
||||
state: str
|
||||
|
||||
|
||||
class BaseGitService(ABC):
|
||||
"""Base class for Git platform services"""
|
||||
|
||||
def __init__(self, base_url: str, token: str, repo_owner: str, repo_name: str):
|
||||
self.base_url = base_url.rstrip("/")
|
||||
self.token = token
|
||||
self.repo_owner = repo_owner
|
||||
self.repo_name = repo_name
|
||||
|
||||
@abstractmethod
|
||||
async def get_pull_request(self, pr_number: int) -> PRInfo:
|
||||
"""Get pull request information"""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def get_pr_files(self, pr_number: int) -> List[FileChange]:
|
||||
"""Get list of changed files in PR"""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def get_file_content(self, file_path: str, ref: str) -> str:
|
||||
"""Get file content at specific ref"""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def create_review_comment(
|
||||
self,
|
||||
pr_number: int,
|
||||
file_path: str,
|
||||
line_number: int,
|
||||
comment: str,
|
||||
commit_id: str
|
||||
) -> Dict[str, Any]:
|
||||
"""Create a review comment on PR"""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def create_review(
|
||||
self,
|
||||
pr_number: int,
|
||||
comments: List[Dict[str, Any]],
|
||||
body: str = ""
|
||||
) -> Dict[str, Any]:
|
||||
"""Create a review with multiple comments"""
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user