feat: add organisations (#1820)

This commit is contained in:
David Nguyen
2025-06-10 11:49:52 +10:00
committed by GitHub
parent 0b37f19641
commit e6dc237ad2
631 changed files with 37616 additions and 25695 deletions

View File

@ -0,0 +1,58 @@
import { getHighestOrganisationRoleInGroup } from '@documenso/lib/utils/organisations';
import { prisma } from '@documenso/prisma';
import { authenticatedProcedure } from '../trpc';
import {
ZGetOrganisationsRequestSchema,
ZGetOrganisationsResponseSchema,
} from './get-organisations.types';
export const getOrganisationsRoute = authenticatedProcedure
// .meta(getOrganisationsMeta)
.input(ZGetOrganisationsRequestSchema)
.output(ZGetOrganisationsResponseSchema)
.query(async ({ ctx }) => {
const { user } = ctx;
return getOrganisations({ userId: user.id });
});
export const getOrganisations = async ({ userId }: { userId: number }) => {
const organisations = await prisma.organisation.findMany({
where: {
members: {
some: {
userId,
},
},
},
include: {
members: {
where: {
userId,
},
},
groups: {
where: {
organisationGroupMembers: {
some: {
organisationMember: {
userId,
},
},
},
},
},
},
});
return organisations.map(({ groups, ...organisation }) => {
const currentOrganisationRole = getHighestOrganisationRoleInGroup(groups);
return {
...organisation,
currentOrganisationRole: currentOrganisationRole,
currentMemberId: organisation.members[0].id,
};
});
};