import type { ServiceMethodFactory } from "@ethicdevs/react-monolith";
import { Organization, Repository } from "@prisma/client";
import type { UsersServiceDeps } from "./types";
const getUserRepositories: ServiceMethodFactory<
UsersServiceDeps,
[string],
Promise<(Repository & { parentOrg: Organization })[]>
> = ({ request }) => {
return async (userId) => {
const userRepos = await request.prisma.repository.findMany({
include: {
organization: true,
},
where: {
OR: [
{
organization: {
ownerId: userId,
},
},
{
organization: {
memberships: {
some: {
userId,
},
},
},
},
],
},
});
return userRepos.map(({ organization: parentOrg, ...repo }) => ({
...repo,
parentOrg,
}));
};
};
export default getUserRepositories;