import { ServiceApiContract } from "@ethicdevs/react-monolith";
import { FastifyRequest } from "fastify";
import { Prisma, PullRequest, Repository, User } from "@prisma/client";
export interface CreatePullRequestDTO {
author: User;
summary: string;
textMd: string;
source: {
repository: Repository;
fromBranch: string;
};
target: {
repository: Repository;
destBranch: string;
};
}
export type PullRequestSelectOrIncludes =
| { select?: Prisma.PullRequestSelect }
| { includes?: Prisma.PullRequestInclude };
export interface PullRequestServiceAPI extends ServiceApiContract {
getPullRequestById(
pullRequestId: string,
selectOrIncludes?: PullRequestSelectOrIncludes
): Promise<PullRequest | null>;
getPullRequestByUid<R = PullRequest | null>(
orgSlug: string,
repoSlug: string,
pullRequestUid: number,
selectOrIncludes?: PullRequestSelectOrIncludes
): Promise<R>;
getPullRequestsInRepository(
repository: Repository,
selectOrIncludes?: PullRequestSelectOrIncludes
): Promise<PullRequest[]>;
createPullRequest(dto: CreatePullRequestDTO): Promise<PullRequest>;
}
export interface PullRequestServiceDeps {
request: FastifyRequest;
}