import type { BaseResponse } from '@/types/base';

/**
 * 仓库组响应类型
 */
export interface RepositoryGroupResponse extends BaseResponse {
    /** 仓库组名 */
    name: string;
    /** 仓库组描述 */
    description?: string;
    /** 父级仓库组ID */
    parentId?: number;
    /** 仓库组路径 */
    path: string;
    /** 头像URL */
    avatarUrl?: string;
    /** 完整名称（包含层级关系） */
    fullName?: string;
    /** 完整路径 */
    fullPath?: string;
    /** 网页URL */
    webUrl?: string;
    /** 可见性 */
    visibility: string;
    /** 排序号 */
    sort?: number;
    /** 外部系统中的组ID */
    repoGroupId?: number;
    /** 外部系统ID */
    externalSystemId: number;
    /** 项目数量 */
    projectCount?: number;
    /** 子仓库组列表（用于树形结构） */
    children?: RepositoryGroupResponse[];
}

/**
 * 仓库项目响应类型
 */
export interface RepositoryProjectResponse extends BaseResponse {
    /** 项目名称 */
    name: string;
    /** 项目路径 */
    path: string;
    /** 项目描述 */
    description?: string;
    /** 可见性 */
    visibility: string;
    /** 默认分支名称 */
    isDefaultBranch?: string;
    /** 网页URL */
    webUrl?: string;
    /** SSH URL */
    sshUrl?: string;
    /** HTTP URL */
    httpUrl?: string;
    /** 最后活动时间 */
    lastActivityAt?: string;
    /** 外部系统ID */
    externalSystemId: number;
    /** 所属仓库组ID */
    repoGroupId?: number;
    /** 外部系统中的项目ID */
    repoProjectId?: number;
    /** 分支数量 */
    branchCount?: number;
}

/**
 * 仓库分支响应类型
 */
export interface RepositoryBranchResponse extends BaseResponse {
    /** 分支名称 */
    name: string;
    /** 是否为默认分支 */
    isDefaultBranch?: boolean;
    /** 是否可推送 */
    canPush?: boolean;
    /** 开发者是否可推送 */
    developersCanPush?: boolean;
    /** 开发者是否可合并 */
    developersCanMerge?: boolean;
    /** 最后提交ID */
    lastCommitId?: string;
    /** 提交信息 */
    commitMessage?: string;
    /** 提交作者 */
    commitAuthor?: string;
    /** 提交日期 */
    commitDate?: string;
    /** 最后更新时间 */
    lastUpdateTime?: string;
    /** 网页URL */
    webUrl?: string;
    /** 项目ID */
    projectId?: number;
    /** 所属项目ID（外部系统中的项目ID） */
    repoProjectId: number;
    /** 外部系统ID */
    externalSystemId: number;
}

/**
 * 仓库组查询参数
 */
export interface RepositoryGroupQuery {
    /** 仓库组名称 */
    name?: string;
    /** 父级ID */
    parentId?: number;
    /** 外部系统ID */
    externalSystemId?: number;
    /** 可见性 */
    visibility?: string;
}

/**
 * 仓库项目查询参数
 */
export interface RepositoryProjectQuery {
    /** 项目名称 */
    name?: string;
    /** 仓库组ID */
    repoGroupId?: number;
    /** 外部系统ID */
    externalSystemId?: number;
    /** 可见性 */
    visibility?: string;
}

/**
 * 仓库分支查询参数
 */
export interface RepositoryBranchQuery {
    /** 分支名称 */
    name?: string;
    /** 项目ID */
    repoProjectId?: number;
    /** 外部系统ID */
    externalSystemId?: number;
    /** 是否为默认分支 */
    isDefaultBranch?: boolean;
}

