import type { ServiceMethodFactory } from "@ethicdevs/react-monolith";
import { Repository } from "@prisma/client";
import { RepositoryWithParentAndForkedFromRepos } from "../../types";
import type { RepositoryServiceDeps } from "./types";
const makeGetCurrentUserRepositoryForks: ServiceMethodFactory<
RepositoryServiceDeps,
[Repository],
Promise<RepositoryWithParentAndForkedFromRepos[]>
> = ({ request }) => {
return async (repository) => {
if (request.session.data.curr_user_uid == null) {
return [];
}
const currentUserForks = await request.prisma.repository.findMany({
include: {
organization: true,
forkedFromRepo: {
select: {
id: true,
slug: true,
displayName: true,
organization: {
select: {
id: true,
slug: true,
displayName: true,
},
},
},
},
forks: {
select: {
_count: true,
},
},
},
where: {
isFork: true,
forkedFromRepo: {
id: {
equals: repository.id,
},
},
organization: {
OR: [
{
owner: {
id: {
equals: request.session.data.curr_user_uid,
},
},
},
{
memberships: {
some: {
userId: {
equals: request.session.data.curr_user_uid,
},
},
},
},
],
},
},
});
return currentUserForks;
};
};
export default makeGetCurrentUserRepositoryForks;