def init_schemas()

in backend/python/plugins/azuredevops/azuredevops/migrations.py [0:0]


def init_schemas(b: MigrationScriptBuilder):
    class AzureDevOpsConnection(Connection):
        token: SecretStr
        organization: Optional[str]

    class AzureDevopsTransformationRule(ToolTable, Model):
        name: str = Field(default="default")
        refdiff: Optional[RefDiffOptions]
        deployment_pattern: Optional[re.Pattern]
        production_pattern: Optional[re.Pattern]

    class GitRepository(ToolModel):
        id: str = Field(primary_key=True)
        name: str
        url: str
        remote_url: Optional[str]
        default_branch: Optional[str]
        project_id: str
        org_id: str
        parent_repository_url: Optional[str]
        provider: Optional[str]

    class GitPullRequest(ToolModel):
        class PRStatus(Enum):
            Abandoned = "abandoned"
            Active = "active"
            Completed = "completed"

        pull_request_id: int = Field(primary_key=True)
        description: Optional[str]
        status: PRStatus
        created_by_id: str
        created_by_name: str
        creation_date: datetime.datetime
        closed_date: Optional[datetime.datetime]
        source_commit_sha: str
        target_commit_sha: str
        merge_commit_sha: Optional[str]
        url: Optional[str]
        type: Optional[str]
        title: Optional[str]
        target_ref_name: Optional[str]
        source_ref_name: Optional[str]
        fork_repo_id: Optional[str]

    class GitPullRequestCommit(ToolModel):
        commit_id: str = Field(primary_key=True)
        pull_request_id: str
        author_name: str
        author_email: str
        author_date: datetime.datetime

    class Build(ToolModel):
        class BuildStatus(Enum):
            Cancelling = "cancelling"
            Completed = "completed"
            InProgress = "inProgress"
            NotStarted = "notStarted"
            Postponed = "postponed"

        class BuildResult(Enum):
            Canceled = "canceled"
            Failed = "failed"
            Non = "none"
            PartiallySucceeded = "partiallySucceeded"
            Succeeded = "succeeded"

        id: int = Field(primary_key=True, auto_increment=False)
        name: str
        start_time: Optional[datetime.datetime]
        finish_time: Optional[datetime.datetime]
        status: BuildStatus
        result: Optional[BuildResult]
        source_branch: str
        source_version: str

    class Job(ToolModel):
        class JobState(Enum):
            Completed = "completed"
            InProgress = "inProgress"
            Pending = "pending"

        class JobResult(Enum):
            Abandoned = "abandoned"
            Canceled = "canceled"
            Failed = "failed"
            Skipped = "skipped"
            Succeeded = "succeeded"
            SucceededWithIssues = "succeededWithIssues"

        id: str = Field(primary_key=True)
        build_id: str
        name: str
        startTime: Optional[datetime.datetime]
        finishTime: Optional[datetime.datetime]
        state: JobState
        result: Optional[JobResult]

    b.create_tables(
        AzureDevOpsConnection,
        AzureDevopsTransformationRule,
        GitRepository,
        GitPullRequestCommit,
        GitPullRequest,
        Build,
        Job,
    )