Appearance
apps/api/src/features/groups/groups.service.ts ​
Auto-generated by
scripts/generate-file-docs.ts. Do not edit — overwritten on every run.
Purpose ​
GroupsService — small groups, ministries, and leadership groups. Backs api-contracts.md Section 7 (Groups & Ministries). Distinct from FamilyGroup (ADR 0007). All groups share one table; GroupType discriminates. Authorization summary: - Anyone authenticated may list visible groups (LEADERSHIP hidden from visitor/member; visible to group_leader and above). - Anyone authenticated may view a group; leaders and ministry_leader+ additionally receive the member roster. - Create requires ministry_leader+ platform role; creator is recorded as the group's leader via Group.leaderId. - Update requires the group's leader (Group.leaderId === requester) OR a platform ministry_leader+. - Join: if the group requires approval (today: LEADERSHIP type) the request opens an ApprovalWorkflow(type=MEMBER_JOIN, notes=groupId). Otherwise we create the GroupMember directly. - Approve: group leader OR ministry_leader+. Creates the GroupMember and resolves the workflow. - Remove member: self OR group leader OR ministry_leader+. - Update member role: group leader OR admin. Today this promotes / demotes the GROUP-level leader by mutating Group.leaderId — the schema does not yet support a per-member role on GroupMember (open question, see handoff). Every state transition writes an AuditLog row. /
Exports ​
export interface ListGroupsParamsexport interface GroupListItemexport interface ListGroupsResultexport interface GroupDetailexport interface RequestJoinResultexport class GroupsServiceexport const groupsService
Imports ​
../../adapters/db../../lib/errors../../lib/logger../../lib/pagination../../middleware/requireAuth@prisma/client