Skip to content

No mongo action items #3385

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

NishantSinghhhhh
Copy link

@NishantSinghhhhh NishantSinghhhhh commented Mar 21, 2025

What kind of change does this PR introduce?

Feature: Migrates ActionItem handling from Express endpoints to GraphQL schema and resolvers.

Issue Number: Fixes #3320

Snapshots/Videos:

N/A (No UI changes; these changes affect backend GraphQL schemas and resolvers.)
If relevant, did you update the documentation?

I have added/updated relevant documentation within the code and README where needed.
Summary

Motivation: We previously handled ActionItem CRUD using Express routes. This PR migrates those routes into a new GraphQL schema (ActionItem.ts) with related resolvers (e.g., creator.ts, assignee.ts, createdAt.ts, etc.). This ensures more flexible querying and improves consistency with other GraphQL-based parts of the codebase.
Changes:
Created a new ActionItem.ts GraphQL type exposing core fields (e.g., id, createdAt, organizationId, etc.).
Added separate files (creator.ts, assignee.ts, etc.) to modularize logic for fetching related objects.
Updated Drizzle ORM queries to handle relationships using findFirst and relevant where clauses.
Ensured ActionItemCategory.ts is properly related to ActionItem via categoryId.
Addressed TypeScript type issues by explicitly casting return types and adding null checks.
Does this PR introduce a breaking change?

Potentially no: Existing data is unaffected, but any service depending on the old Express routes must switch to using the GraphQL endpoints.
Checklist
CodeRabbit AI Review
I have reviewed and addressed all critical issues flagged by CodeRabbit AI.
I have implemented or provided justification for each non-critical suggestion.
I have documented my reasoning in the PR comments where CodeRabbit AI suggestions were not implemented.
Test Coverage
I have written or updated tests for all new GraphQL fields and resolvers.
I have verified that the test coverage meets or exceeds 95%.
I have run the test suite locally, and all tests pass.
Other Information

This PR updates Drizzle migrations to ensure that tables related to ActionItem are consistent with GraphQL fields.
Any front-end or service code referencing the old Express routes should begin using the GraphQL queries and mutations.
Have you read the contributing guide? Yes

Summary by CodeRabbit

  • New Features

    • Expanded task management capabilities, including creating, updating, deleting, and marking tasks as pending.
    • Introduced new queries to retrieve task categories, events, and organization members, streamlining workflow oversight.
    • Added functionality for joining public organizations to enhance collaboration.
  • Refactor/Chores

    • Improved data flexibility for task completion timestamps.
    • Enhanced server configuration and updated dependencies to boost overall stability and performance.

Signed-off-by: NishantSinghhhhh <[email protected]>
Signed-off-by: NishantSinghhhhh <[email protected]>
Copy link

coderabbitai bot commented Mar 21, 2025

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (300)
  • docs/docs/docs/auto-schema/createServer/functions/createServer.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/advertisementAttachmentMimeType/variables/advertisementAttachmentMimeTypeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/advertisementType/variables/advertisementTypeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/agendaItemType/variables/agendaItemTypeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/chatMembershipRole/variables/chatMembershipRoleEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/commentVoteType/variables/commentVoteTypeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/eventAttachmentMimeType/variables/eventAttachmentMimeTypeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/familyMembershipRole/variables/familyMembershipRoleEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/imageMimeType/variables/imageMimeTypeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/iso3166Alpha2CountryCode/variables/iso3166Alpha2CountryCodeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/iso4217CurrencyCode/variables/iso4217CurrencyCodeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/iso639Set1LanguageCode/variables/iso639Set1LanguageCodeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/membershipRequestStatus/variables/MembershipRequestStatusEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/membershipRequestStatus/variables/MembershipRequestStatusValues.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/organizationMembershipRole/variables/organizationMembershipRoleEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/postAttachmentMimeType/variables/graphqlMimeTypeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/postAttachmentMimeType/variables/mimeTypeMapping.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/postAttachmentMimeType/variables/postAttachmentMimeTypeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/postVoteType/variables/postVoteTypeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/userEducationGrade/variables/userEducationGradeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/userEmploymentStatus/variables/userEmploymentStatusEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/userMaritalStatus/variables/userMaritalStatusEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/userNatalSex/variables/userNatalSexEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/userRole/variables/userRoleEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/venueAttachmentMimeType/variables/venueAttachmentMimeTypeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/videoMimeType/variables/videoMimeTypeEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/enums/volunteerGroupAssignmentInviteStatus/variables/volunteerGroupAssignmentInviteStatusEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/actionCategories/variables/actionCategoriesTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/actionCategories/variables/actionCategoriesTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/actions/variables/actionsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/actions/variables/actionsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/actions/variables/actionsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/advertisementAttachments/variables/advertisementAttachmentsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/advertisementAttachments/variables/advertisementAttachmentsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/advertisementAttachments/variables/advertisementAttachmentsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/advertisements/variables/advertisementsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/advertisements/variables/advertisementsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/advertisements/variables/advertisementsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/agendaFolders/variables/agendaFoldersTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/agendaFolders/variables/agendaFoldersTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/agendaFolders/variables/agendaFoldersTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/agendaItems/variables/agendaItemsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/agendaItems/variables/agendaItemsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/agendaItems/variables/agendaItemsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/blockedUsers/variables/blockedUsersTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/blockedUsers/variables/blockedUsersTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/blockedUsers/variables/blockedUsersTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/chatMemberships/variables/chatMembershipsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/chatMemberships/variables/chatMembershipsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/chatMemberships/variables/chatMembershipsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/chatMessages/variables/chatMessagesTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/chatMessages/variables/chatMessagesTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/chatMessages/variables/chatMessagesTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/chats/variables/chatsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/chats/variables/chatsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/chats/variables/chatsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/commentVotes/variables/commentVotesTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/commentVotes/variables/commentVotesTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/commentVotes/variables/commentVotesTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/comments/variables/commentsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/comments/variables/commentsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/comments/variables/commentsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/communities/variables/communitiesTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/communities/variables/communitiesTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/communities/variables/communitiesTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/eventAttachments/variables/eventAttachmentsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/eventAttachments/variables/eventAttachmentsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/eventAttachments/variables/eventAttachmentsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/eventAttendances/variables/eventAttendancesTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/eventAttendances/variables/eventAttendancesTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/events/variables/eventsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/events/variables/eventsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/events/variables/eventsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/families/variables/familiesTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/families/variables/familiesTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/familyMemberships/variables/familyMembershipsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/familyMemberships/variables/familyMembershipsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/fundCampaignPledges/variables/fundCampaignPledgesTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/fundCampaignPledges/variables/fundCampaignPledgesTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/fundCampaignPledges/variables/fundCampaignPledgesTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/fundCampaigns/variables/fundCampaignsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/fundCampaigns/variables/fundCampaignsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/fundCampaigns/variables/fundCampaignsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/funds/variables/fundsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/funds/variables/fundsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/funds/variables/fundsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/membershipRequests/variables/membershipRequestsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/membershipRequests/variables/membershipRequestsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/membershipRequests/variables/membershipRequestsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/organizationMemberships/variables/organizationMembershipsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/organizationMemberships/variables/organizationMembershipsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/organizationMemberships/variables/organizationMembershipsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/organizations/variables/organizationsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/organizations/variables/organizationsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/organizations/variables/organizationsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/postAttachments/variables/postAttachmentsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/postAttachments/variables/postAttachmentsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/postAttachments/variables/postAttachmentsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/postVotes/variables/postVotesTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/postVotes/variables/postVotesTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/postVotes/variables/postVotesTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/posts/variables/postsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/posts/variables/postsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/posts/variables/postsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/tagAssignments/variables/tagAssignmentsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/tagAssignments/variables/tagAssignmentsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/tagAssignments/variables/tagAssignmentsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/tagFolders/variables/tagFoldersTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/tagFolders/variables/tagFoldersTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/tagFolders/variables/tagFoldersTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/users/variables/usersTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/users/variables/usersTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/users/variables/usersTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/venueAttachments/variables/venueAttachmentsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/venueAttachments/variables/venueAttachmentsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/venueAttachments/variables/venueAttachmentsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/venueBookings/variables/venueBookingsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/venueBookings/variables/venueBookingsTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/venueBookings/variables/venueBookingsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/venues/variables/venuesTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/venues/variables/venuesTableInsertSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/venues/variables/venuesTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/volunteerGroupAssignments/variables/volunteerGroupAssignmentsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/volunteerGroupAssignments/variables/volunteerGroupAssignmentsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/volunteerGroups/variables/volunteerGroupsTable.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/drizzle/tables/volunteerGroups/variables/volunteerGroupsTableRelations.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/envConfigSchema/type-aliases/EnvConfig.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/envConfigSchema/variables/envConfigSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/envConfigSchema/variables/envSchemaAjv.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/builder/variables/builder.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/context/type-aliases/CurrentClient.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/context/type-aliases/ExplicitAuthenticationTokenPayload.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/context/type-aliases/ExplicitGraphQLContext.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/context/type-aliases/GraphQLContext.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/context/type-aliases/ImplicitMercuriusContext.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/AdvertisementType/variables/AdvertisementType.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/AgendaItemType/variables/AgendaItemType.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/ChatMembershipRole/variables/ChatMembershipRole.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/CommentVoteType/variables/CommentVoteType.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/Iso3166Alpha2CountryCode/variables/Iso3166Alpha2CountryCode.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/Iso4217CurrencyCode/variables/Iso4217CurrencyCode.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/Iso639Set1LanguageCode/variables/Iso639Set1LanguageCode.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/OrganizationMembershipRole/variables/OrganizationMembershipRole.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/PostVoteType/variables/PostVoteType.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/UserEducationGrade/variables/UserEducationGrade.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/UserEmploymentStatus/variables/UserEmploymentStatus.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/UserMaritalStatus/variables/UserMaritalStatus.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/UserNatalSex/variables/UserNatalSex.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/UserRole/variables/UserRole.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/enums/membershipRequestStatus/variables/MembershipRequestStatusEnum.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationAcceptMembershipRequestInput/variables/MutationAcceptMembershipRequestInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationAcceptMembershipRequestInput/variables/acceptMembershipRequestInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationBlockUserInput/variables/MutationBlockUserInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationBlockUserInput/variables/mutationBlockUserInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCancelMembershipRequestInput/variables/MutationCancelMembershipRequestInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCancelMembershipRequestInput/variables/cancelMembershipRequestInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateAdvertisementInput/variables/MutationCreateAdvertisementInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateAdvertisementInput/variables/mutationCreateAdvertisementInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateAgendaFolderInput/variables/MutationCreateAgendaFolderInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateAgendaFolderInput/variables/mutationCreateAgendaFolderInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateAgendaItemInput/variables/MutationCreateAgendaItemInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateAgendaItemInput/variables/mutationCreateAgendaItemInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateChatInput/variables/MutationCreateChatInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateChatInput/variables/mutationCreateChatInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateChatMembershipInput/variables/MutationCreateChatMembershipInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateChatMembershipInput/variables/mutationCreateChatMembershipInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateChatMessageInput/variables/MutationCreateChatMessageInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateChatMessageInput/variables/mutationCreateChatMessageInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateCommentInput/variables/MutationCreateCommentInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateCommentInput/variables/mutationCreateCommentInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateCommentVoteInput/variables/MutationCreateCommentVoteInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateCommentVoteInput/variables/mutationCreateCommentVoteInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateEventInput/variables/MutationCreateEventInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateEventInput/variables/mutationCreateEventInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateFundCampaignInput/variables/MutationCreateFundCampaignInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateFundCampaignInput/variables/mutationCreateFundCampaignInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateFundCampaignPledgeInput/variables/MutationCreateFundCampaignPledgeInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateFundCampaignPledgeInput/variables/mutationCreateFundCampaignPledgeInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateFundInput/variables/MutationCreateFundInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateFundInput/variables/mutationCreateFundInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateGetfileUrlInput/variables/MutationCreateGetfileUrlInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateGetfileUrlInput/variables/mutationCreateGetfileUrlInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateOrganizationInput/variables/MutationCreateOrganizationInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateOrganizationInput/variables/mutationCreateOrganizationInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateOrganizationMembershipInput/variables/MutationCreateOrganizationMembershipInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateOrganizationMembershipInput/variables/mutationCreateOrganizationMembershipInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreatePostInput/variables/FileMetadataInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreatePostInput/variables/MutationCreatePostInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreatePostInput/variables/mutationCreatePostInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreatePostVoteInput/variables/MutationCreatePostVoteInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreatePostVoteInput/variables/mutationCreatePostVoteInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreatePresignedUrlInput/variables/MutationCreatePresignedUrlInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreatePresignedUrlInput/variables/mutationCreatePresignedUrlInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateTagFolderInput/variables/MutationCreateTagFolderInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateTagFolderInput/variables/mutationCreateTagFolderInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateTagInput/variables/MutationCreateTagInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateTagInput/variables/mutationCreateTagInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateUserInput/variables/MutationCreateUserInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateUserInput/variables/mutationCreateUserInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateVenueBookingInput/variables/MutationCreateVenueBookingInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateVenueBookingInput/variables/mutationCreateVenueBookingInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateVenueInput/variables/MutationCreateVenueInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationCreateVenueInput/variables/mutationCreateVenueInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteActionItemInput/variables/MutationDeleteActionItemInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteActionItemInput/variables/mutationDeleteActionItemInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteAdvertisementInput/variables/MutationDeleteAdvertisementInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteAdvertisementInput/variables/mutationDeleteAdvertisementInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteAgendaFolderInput/variables/MutationDeleteAgendaFolderInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteAgendaFolderInput/variables/mutationDeleteAgendaFolderInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteAgendaItemInput/variables/MutationDeleteAgendaItemInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteAgendaItemInput/variables/MutationDeleteAgendaItemInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteChatInput/variables/MutationDeleteChatInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteChatInput/variables/mutationDeleteChatInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteChatMembershipInput/variables/MutationDeleteChatMembershipInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteChatMembershipInput/variables/mutationDeleteChatMembershipInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteChatMessageInput/variables/MutationDeleteChatMessageInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteChatMessageInput/variables/mutationDeleteChatMessageInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteCommentInput/variables/MutationDeleteCommentInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteCommentInput/variables/mutationDeleteCommentInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteCommentVoteInput/variables/MutationDeleteCommentVoteInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteCommentVoteInput/variables/mutationDeleteCommentVoteInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteEventInput/variables/MutationDeleteEventInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteEventInput/variables/mutationDeleteEventInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteFundCampaignInput/variables/MutationDeleteFundCampaignInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteFundCampaignInput/variables/mutationDeleteFundCampaignInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteFundCampaignPledgeInput/variables/MutationDeleteFundCampaignPledgeInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteFundCampaignPledgeInput/variables/mutationDeleteFundCampaignPledgeInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteFundInput/variables/MutationDeleteFundInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteFundInput/variables/mutationDeleteFundInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteOrganizationInput/variables/MutationDeleteOrganizationInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteOrganizationInput/variables/mutationDeleteOrganizationInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteOrganizationMembershipInput/variables/MutationDeleteOrganizationMembershipInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteOrganizationMembershipInput/variables/mutationDeleteOrganizationMembershipInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeletePostInput/variables/MutationDeletePostInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeletePostInput/variables/mutationDeletePostInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeletePostVoteInput/variables/MutationDeletePostVoteInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeletePostVoteInput/variables/mutationDeletePostVoteInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteTagFolderInput/variables/MutationDeleteTagFolderInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteTagFolderInput/variables/mutationDeleteTagFolderInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteTagInput/variables/MutationDeleteTagInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteTagInput/variables/mutationDeleteTagInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteUserInput/variables/MutationDeleteUserInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteUserInput/variables/mutationDeleteUserInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteVenueBookingInput/variables/MutationDeleteVenueBookingInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteVenueBookingInput/variables/mutationDeleteVenueBookingInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteVenueInput/variables/MutationDeleteVenueInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationDeleteVenueInput/variables/mutationDeleteVenueInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationJoinPublicOrganizationInput/variables/MutationJoinPublicOrganizationInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationJoinPublicOrganizationInput/variables/joinPublicOrganizationInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationRejectMembershipRequestInput/variables/MutationRejectMembershipRequestInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationRejectMembershipRequestInput/variables/rejectMembershipRequestInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationSendMembershipRequestInput/variables/MutationSendMembershipRequestInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationSendMembershipRequestInput/variables/sendMembershipRequestInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationSignUpInput/variables/MutationSignUpInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationSignUpInput/variables/mutationSignUpInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUnblockUserInput/variables/MutationUnblockUserInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUnblockUserInput/variables/mutationUnblockUserInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateActionItemInput/variables/MutationUpdateActionItemInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateActionItemInput/variables/MutationUpdateActionItemInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateAdvertisementInput/variables/MutationUpdateAdvertisementInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateAdvertisementInput/variables/mutationUpdateAdvertisementInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateAgendaFolderInput/variables/MutationUpdateAgendaFolderInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateAgendaFolderInput/variables/mutationUpdateAgendaFolderInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateAgendaItemInput/variables/MutationUpdateAgendaItemInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateAgendaItemInput/variables/MutationUpdateAgendaItemInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateChatInput/variables/MutationUpdateChatInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateChatInput/variables/mutationUpdateChatInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateChatMembershipInput/variables/MutationUpdateChatMembershipInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateChatMembershipInput/variables/mutationUpdateChatMembershipInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateChatMessageInput/variables/MutationUpdateChatMessageInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateChatMessageInput/variables/mutationUpdateChatMessageInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateCommentInput/variables/MutationUpdateCommentInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateCommentInput/variables/mutationUpdateCommentInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateCommentVoteInput/variables/MutationUpdateCommentVoteInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateCommentVoteInput/variables/mutationUpdateCommentVoteInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateCommunityInput/variables/MutationUpdateCommunityInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateCommunityInput/variables/mutationUpdateCommunityInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateCurrentUserInput/variables/MutationUpdateCurrentUserInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateCurrentUserInput/variables/mutationUpdateCurrentUserInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateEventInput/variables/MutationUpdateEventInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateEventInput/variables/mutationUpdateEventInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateFundCampaignInput/variables/MutationUpdateFundCampaignInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateFundCampaignInput/variables/mutationUpdateFundCampaignInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateFundCampaignPledgeInput/variables/MutationUpdateFundCampaignPledgeInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateFundCampaignPledgeInput/variables/mutationUpdateFundCampaignPledgeInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateFundInput/variables/MutationUpdateFundInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateFundInput/variables/mutationUpdateFundInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateOrganizationInput/variables/MutationUpdateOrganizationInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateOrganizationInput/variables/mutationUpdateOrganizationInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateOrganizationMembershipInput/variables/MutationUpdateOrganizationMembershipInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateOrganizationMembershipInput/variables/mutationUpdateOrganizationMembershipInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdatePostInput/variables/MutationUpdatePostInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdatePostInput/variables/mutationUpdatePostInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdatePostVoteInput/variables/MutationUpdatePostVoteInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdatePostVoteInput/variables/mutationUpdatePostVoteInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateTagFolderInput/variables/MutationUpdateTagFolderInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateTagFolderInput/variables/mutationUpdateTagFolderInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateTagInput/variables/MutationUpdateTagInput.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateTagInput/variables/mutationUpdateTagInputSchema.md is excluded by !**/docs/docs/**
  • docs/docs/docs/auto-schema/graphql/inputs/MutationUpdateUserInput/variables/MutationUpdateUserInput.md is excluded by !**/docs/docs/**

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

This pull request migrates ActionItem handling from Express endpoints to a GraphQL-based approach. It updates the database schema (dropping a NOT NULL constraint on the completion field and updating the migration journal) and modifies various configuration parameters in the project (e.g. Redis URI and debugger port). In addition, it introduces new GraphQL types, resolvers, mutations, and queries for ActionItem and ActionItemCategory, while also extending DB management scripts and sample data to support these new collections.

Changes

File(s) Change Summary
drizzle_migrations/20250321223020_crazy_avengers.sql, drizzle_migrations/meta/_journal.json Modified the "actions" table by dropping the NOT NULL constraint for completion_at and added a new journal entry.
package.json Added the "uuid": "^11.1.0" dependency, updated script formatting, and changed debugger port from 9229 to 9230.
schema.graphql Added new types (ActionItem, ActionItemCategory), input types, and query fields for managing action items.
scripts/dbManagement/addSampleData.ts, scripts/dbManagement/helpers.ts, scripts/dbManagement/sample_data/{action_categories.json, action_items.json, events.json} Extended collection support to include action_categories, events, and action_items, and added corresponding cases in the data insertion logic.
src/createServer.ts, src/drizzle/tables/actions.ts, src/envConfigSchema.ts Updated Redis configuration to use a single URI and allowed the completionAt field to be nullable via schema changes.
src/graphql/inputs/*, src/graphql/types/*, src/graphql/types/Mutation/*, src/graphql/types/Query/* Introduced numerous GraphQL resolvers, mutations, queries, and input types for creating, updating, deleting, and fetching action items and their related entities.
test/graphql/types/{gql.tada-cache.d.ts, gql.tada.d.ts} Added and updated GraphQL mutation definitions and introspection types to support new ActionItem functionalities.

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant GraphQLAPI
  participant Resolver
  participant Database

  Client->>GraphQLAPI: Send createActionItem mutation with input data
  GraphQLAPI->>Resolver: Validate authentication and input fields
  Resolver->>Database: Query for organization, category, and assignee existence
  Database-->>Resolver: Return query results
  Resolver->>Database: Insert new ActionItem record (with nullable completionAt)
  Database-->>Resolver: Confirm insertion
  Resolver->>GraphQLAPI: Return created ActionItem data
  GraphQLAPI-->>Client: Deliver ActionItem response
Loading

Assessment against linked issues

Objective Addressed Explanation
Migrate ActionItem handling from Express endpoints to GraphQL schema (#3326)

Suggested labels

ignore-sensitive-files-pr

Suggested reviewers

  • palisadoes
  • disha1202

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai plan to trigger planning for file edits and PR creation.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

Our Pull Request Approval Process

Thanks for contributing!

Testing Your Code

Remember, your PRs won't be reviewed until these criteria are met:

  1. We don't merge PRs with poor code quality.
    1. Follow coding best practices such that CodeRabbit.ai approves your PR.
  2. We don't merge PRs with failed tests.
    1. When tests fail, click on the Details link to learn more.
    2. Write sufficient tests for your changes (CodeCov Patch Test). Your testing level must be better than the target threshold of the repository
    3. Tests may fail if you edit sensitive files. Ask to add the ignore-sensitive-files-pr label if the edits are necessary.
  3. We cannot merge PRs with conflicting files. These must be fixed.

Our policies make our code better.

Reviewers

Do not assign reviewers. Our Queue Monitors will review your PR and assign them.
When your PR has been assigned reviewers contact them to get your code reviewed and approved via:

  1. comments in this PR or
  2. our slack channel

Reviewing Your Code

Your reviewer(s) will have the following roles:

  1. arbitrators of future discussions with other contributors about the validity of your changes
  2. point of contact for evaluating the validity of your work
  3. person who verifies matching issues by others that should be closed.
  4. person who gives general guidance in fixing your tests

CONTRIBUTING.md

Read our CONTRIBUTING.md file. Most importantly:

  1. PRs with issues not assigned to you will be closed by the reviewer
  2. Fix the first comment in the PR so that each issue listed automatically closes

Other

  1. 🎯 Please be considerate of our volunteers' time. Contacting the person who assigned the reviewers is not advised unless they ask for your input. Do not @ the person who did the assignment otherwise.
  2. Read the CONTRIBUTING.md file make

@NishantSinghhhhh
Copy link
Author

I will make sure to merge this PR as soon as possible , it has been 2 weeks since it is dormant

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 36

🔭 Outside diff range comments (1)
src/graphql/types/ActionItem/assignee.ts (1)

53-54: 🧹 Nitpick (assertive)

Apply consistent formatting.
A trailing parenthesis issue appears to prompt the formatter complaint. A quick format pass (similar to the other files) should address it.

🧰 Tools
🪛 GitHub Actions: Pull request workflow

[error] 53-54: Formatter would have printed the following content: - }); + });

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b6399b0 and 247632f.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (36)
  • drizzle_migrations/20250321223020_crazy_avengers.sql (1 hunks)
  • drizzle_migrations/meta/_journal.json (1 hunks)
  • package.json (4 hunks)
  • schema.graphql (17 hunks)
  • scripts/dbManagement/addSampleData.ts (3 hunks)
  • scripts/dbManagement/helpers.ts (4 hunks)
  • scripts/dbManagement/sample_data/action_categories.json (1 hunks)
  • scripts/dbManagement/sample_data/action_items.json (1 hunks)
  • scripts/dbManagement/sample_data/events.json (1 hunks)
  • src/createServer.ts (1 hunks)
  • src/drizzle/tables/actions.ts (3 hunks)
  • src/envConfigSchema.ts (1 hunks)
  • src/graphql/inputs/MutationDeleteActionItemInput.ts (1 hunks)
  • src/graphql/inputs/MutationUpdateActionItemInput.ts (1 hunks)
  • src/graphql/inputs/QueryActionItemInput.ts (1 hunks)
  • src/graphql/types/ActionItem/ActionItem.ts (1 hunks)
  • src/graphql/types/ActionItem/assignee.ts (1 hunks)
  • src/graphql/types/ActionItem/createdAt.ts (1 hunks)
  • src/graphql/types/ActionItem/creator.ts (1 hunks)
  • src/graphql/types/ActionItem/event.ts (1 hunks)
  • src/graphql/types/ActionItem/index.ts (1 hunks)
  • src/graphql/types/ActionItem/updatedAt.ts (1 hunks)
  • src/graphql/types/ActionItemCategory/ActionItemCategory.ts (1 hunks)
  • src/graphql/types/ActionItemCategory/index.ts (1 hunks)
  • src/graphql/types/Mutation/createActionItem.ts (1 hunks)
  • src/graphql/types/Mutation/deleteActionItem.ts (1 hunks)
  • src/graphql/types/Mutation/index.ts (1 hunks)
  • src/graphql/types/Mutation/updateActionItem.ts (1 hunks)
  • src/graphql/types/Query/ActionCategory.ts (1 hunks)
  • src/graphql/types/Query/ActionItem.ts (1 hunks)
  • src/graphql/types/Query/Events.ts (1 hunks)
  • src/graphql/types/Query/index.ts (1 hunks)
  • src/graphql/types/Query/organizationUsers.ts (1 hunks)
  • src/graphql/types/index.ts (1 hunks)
  • test/graphql/types/gql.tada-cache.d.ts (1 hunks)
  • test/graphql/types/gql.tada.d.ts (10 hunks)
🧰 Additional context used
🧠 Learnings (2)
src/graphql/types/ActionItem/assignee.ts (1)
Learnt from: GlenDsza
PR: PalisadoesFoundation/talawa-api#2615
File: src/resolvers/Mutation/createActionItem.ts:75-94
Timestamp: 2025-03-20T00:05:12.821Z
Learning: In `src/resolvers/Mutation/createActionItem.ts`, the assignee validation logic within the `createActionItem` function is intentionally kept inline and is not to be extracted into a helper function.
src/graphql/types/Mutation/createActionItem.ts (1)
Learnt from: GlenDsza
PR: PalisadoesFoundation/talawa-api#2615
File: src/resolvers/Mutation/createActionItem.ts:75-94
Timestamp: 2025-03-20T00:05:12.821Z
Learning: In `src/resolvers/Mutation/createActionItem.ts`, the assignee validation logic within the `createActionItem` function is intentionally kept inline and is not to be extracted into a helper function.
🧬 Code Definitions (11)
src/graphql/types/ActionItem/event.ts (1)
src/graphql/types/ActionItem/ActionItem.ts (2) (2)
  • ActionItem (4-4)
  • ActionItem (6-6)
src/graphql/inputs/QueryActionItemInput.ts (1)
src/drizzle/tables/actions.ts (1) (1)
  • actionsTableInsertSchema (120-120)
src/graphql/types/ActionItem/createdAt.ts (1)
src/graphql/types/ActionItem/ActionItem.ts (2) (2)
  • ActionItem (4-4)
  • ActionItem (6-6)
src/graphql/types/Mutation/deleteActionItem.ts (3)
src/graphql/inputs/MutationDeleteActionItemInput.ts (2) (2)
  • mutationDeleteActionItemInputSchema (5-7)
  • MutationDeleteActionItemInput (9-21)
src/drizzle/tables/actions.ts (1) (1)
  • actionsTable (17-84)
src/graphql/types/ActionItem/ActionItem.ts (2) (2)
  • ActionItem (4-4)
  • ActionItem (6-6)
src/graphql/types/Query/ActionCategory.ts (1)
src/graphql/types/ActionItemCategory/ActionItemCategory.ts (2) (2)
  • ActionItemCategory (6-6)
  • ActionItemCategory (8-9)
src/graphql/types/ActionItem/assignee.ts (1)
src/graphql/types/ActionItem/ActionItem.ts (2) (2)
  • ActionItem (4-4)
  • ActionItem (6-6)
src/graphql/types/ActionItem/creator.ts (1)
src/graphql/types/ActionItem/ActionItem.ts (2) (2)
  • ActionItem (4-4)
  • ActionItem (6-6)
src/graphql/types/Mutation/createActionItem.ts (2)
src/graphql/types/ActionItem/ActionItem.ts (2) (2)
  • ActionItem (4-4)
  • ActionItem (6-6)
src/drizzle/tables/actions.ts (1) (1)
  • actionsTable (17-84)
src/graphql/inputs/MutationUpdateActionItemInput.ts (1)
src/drizzle/tables/actions.ts (1) (1)
  • actionsTableInsertSchema (120-120)
src/graphql/types/Mutation/updateActionItem.ts (3)
src/graphql/inputs/MutationUpdateActionItemInput.ts (2) (2)
  • MutationUpdateActionItemInputSchema (5-15)
  • MutationUpdateActionItemInput (17-44)
src/drizzle/tables/actions.ts (1) (1)
  • actionsTable (17-84)
src/graphql/types/ActionItem/ActionItem.ts (2) (2)
  • ActionItem (4-4)
  • ActionItem (6-6)
src/graphql/types/Query/ActionItem.ts (2)
src/graphql/inputs/QueryActionItemInput.ts (2) (2)
  • queryActionItemsByOrgInputSchema (8-10)
  • QueryActionItemsByOrganizationInput (15-27)
src/graphql/types/ActionItem/ActionItem.ts (2) (2)
  • ActionItem (4-4)
  • ActionItem (6-6)
🪛 GitHub Actions: Pull request workflow
src/graphql/types/ActionItemCategory/index.ts

[error] 1-2: Formatter would have printed the following content: - import·"./ActionItemCategory"; + import·"./ActionItemCategory";

src/createServer.ts

[error] 82-83: Formatter would have printed the following content: - → ··}); + → });

src/graphql/types/ActionItem/event.ts

[error] 42-43: Formatter would have printed the following content: - }); + });

src/graphql/inputs/MutationDeleteActionItemInput.ts

[error] 21-22: Formatter would have printed the following content: - → }); + → });

src/graphql/inputs/QueryActionItemInput.ts

[error] 27-28: Formatter would have printed the following content: - → }); + → });

src/graphql/types/ActionItem/createdAt.ts

[error] 77-78: Formatter would have printed the following content: - }); + });

src/graphql/types/Mutation/deleteActionItem.ts

[error] 8-9: Import statements could be sorted.

src/graphql/types/ActionItem/index.ts

[error] 6-7: Formatter would have printed the following content: - export··from·"./event"; + export··from·"./event";

src/drizzle/tables/actions.ts

[error] 120-121: Formatter would have printed the following content: - export·const·actionsTableInsertSchema·=·createInsertSchema(actionsTable); + export·const·actionsTableInsertSchema·=·createInsertSchema(actionsTable);

src/graphql/types/ActionItem/assignee.ts

[error] 53-54: Formatter would have printed the following content: - }); + });

scripts/dbManagement/addSampleData.ts

[error] 74-75: Formatter would have printed the following content: - } + }

src/graphql/types/ActionItem/creator.ts

[error] 89-90: Formatter would have printed the following content: - }); + });

src/graphql/types/Mutation/createActionItem.ts

[error] 163-164: Formatter would have printed the following content: - ); + );


[error] 8-9: Import statements could be sorted.

src/graphql/types/ActionItem/updatedAt.ts

[error] 81-82: Formatter would have printed the following content: - }; + };

src/graphql/types/ActionItemCategory/ActionItemCategory.ts

[error] 82-83: Formatter would have printed the following content: - ); + );

src/graphql/inputs/MutationUpdateActionItemInput.ts

[error] 44-45: Formatter would have printed the following content: - → }); + → });

src/graphql/types/ActionItem/ActionItem.ts

[error] 64-65: Formatter would have printed the following content: - }); + });

src/envConfigSchema.ts

[error] 246-246: Formatter would have printed the following content: - → → format:·'uri',·//·optional·if·your·validator·supports·URI·format·validation + → → format:·"uri",·//·optional·if·your·validator·supports·URI·format·validation

scripts/dbManagement/helpers.ts

[error] 675-675: Formatter would have printed the following content: - } + }

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyse Code With CodeQL (typescript)
🔇 Additional comments (66)
src/graphql/types/ActionItemCategory/index.ts (1)

1-1:

✅ Verification successful

Imported the ActionItemCategory module successfully.

This import is correctly set up to include the ActionItemCategory module in the GraphQL schema. The pipeline failure indicates a minor formatting issue that doesn't affect functionality.


🏁 Script executed:

#!/bin/bash
# Verify that the ActionItemCategory definition exists
fd ActionItemCategory.ts --type f

Length of output: 94


Verified Import of ActionItemCategory Module

  • The file src/graphql/types/ActionItemCategory/ActionItemCategory.ts was located successfully, confirming that the import statement in src/graphql/types/ActionItemCategory/index.ts is correct.
  • The minor formatting issue noted in the pipeline does not impact functionality.
🧰 Tools
🪛 GitHub Actions: Pull request workflow

[error] 1-2: Formatter would have printed the following content: - import·"./ActionItemCategory"; + import·"./ActionItemCategory";

drizzle_migrations/20250321223020_crazy_avengers.sql (1)

1-1: Migration correctly drops NOT NULL constraint for action completion.

This SQL migration makes the "completion_at" column nullable, which aligns with the PR objective of migrating ActionItem handling to GraphQL. Making this field optional provides more flexibility for action items that haven't been completed yet.

drizzle_migrations/meta/_journal.json (1)

11-18: Journal entry properly records the new migration.

The journal entry correctly tracks the new migration for altering the "completion_at" column with appropriate metadata, including the timestamp and migration tag that matches the SQL file name.

src/graphql/types/index.ts (1)

1-2:

✅ Verification successful

New ActionItem types are correctly registered in the GraphQL schema.

These imports incorporate the new ActionItem and ActionItemCategory modules into the main GraphQL types system, supporting the migration from Express endpoints to GraphQL as intended in the PR objectives.


🏁 Script executed:

#!/bin/bash
# Verify that both ActionItem and ActionItemCategory are properly structured
echo "Checking ActionItem implementation:"
fd --type f ActionItem/

echo -e "\nChecking ActionItemCategory implementation:"
fd --type f ActionItemCategory/

echo -e "\nVerifying GraphQL schema updates for ActionItem:"
fd schema.graphql --type f | xargs grep -A 10 -B 2 "ActionItem"

Length of output: 5780


GraphQL Schema Registration Verified

The imports in src/graphql/types/index.ts correctly include both the ActionItem and ActionItemCategory modules. Verification shows that:

  • The ActionItem implementation is present.
  • The ActionItemCategory implementation is detected.
  • The GraphQL schema file includes proper type definitions for both ActionItem and ActionItemCategory.

The migration from Express endpoints to GraphQL appears to be supported as intended.

src/graphql/types/Query/index.ts (1)

23-26: Good addition of new query types!

The new imports for ActionCategory, ActionItem, organizationUsers, and Events align with the PR objective of migrating ActionItem handling to GraphQL.

Consider standardizing the casing convention between your imports. For example, line 10 uses "event" (camelCase) while line 26 introduces "Events" (PascalCase). Similarly, "ActionCategory" and "ActionItem" use PascalCase while "organizationUsers" uses camelCase.

src/envConfigSchema.ts (1)

270-275: Good documentation addition.

Adding a descriptive comment for the rate limit refill rate parameter improves code clarity.

src/drizzle/tables/actions.ts (3)

10-10: Good import addition for schema creation.

Adding the createInsertSchema import from drizzle-zod supports the new schema export at the end of the file.


33-37: Well-considered change to make completionAt nullable.

Removing the .notNull() constraint from the completionAt field makes sense for action items that haven't been completed yet. This aligns well with the PR objective of enhancing the flexibility of the ActionItem model.


119-120: Good export of insert schema.

Exporting actionsTableInsertSchema created with createInsertSchema enables validation for action item insertions and is used by the new GraphQL input types.

src/graphql/inputs/QueryActionItemInput.ts (2)

1-10: Well-structured schema definition.

Good job creating a Zod validation schema that reuses the organization ID field from the actions table insert schema. This ensures consistent validation across the application.


12-27: Well-implemented GraphQL input type.

The GraphQL input type definition follows the builder pattern used elsewhere in the codebase and includes helpful descriptions. This input type will make it easy for clients to query action items by organization.

Make sure that appropriate tests are in place to verify that this new input type works correctly with the GraphQL resolver.

scripts/dbManagement/sample_data/action_categories.json (1)

1-137: Sample data structure looks good.

The action categories JSON data is well-structured with consistent field types, providing good test data across multiple organizations. Each category has a proper UUID, sensible timestamps, and appropriate organization references.

src/graphql/types/ActionItem/index.ts (2)

1-6: LGTM: Well-structured index file for ActionItem types

This index file correctly exports all necessary ActionItem-related modules, making them easily accessible throughout the codebase.


6-6:

✅ Verification successful

Fix formatting issue

The pipeline failure indicates a formatting issue with line 6. Please ensure there's no extra whitespace or newline at the end of the file.


🏁 Script executed:

#!/bin/bash
# Check for formatting issues in the file
cat src/graphql/types/ActionItem/index.ts | wc -l

Length of output: 53


Formatting issue resolved

The file now has 5 lines, which indicates that the extra newline/whitespace issue previously reported at line 6 has been removed. No further changes are needed in this file.

🧰 Tools
🪛 GitHub Actions: Pull request workflow

[error] 6-7: Formatter would have printed the following content: - export··from·"./event"; + export··from·"./event";

scripts/dbManagement/addSampleData.ts (2)

13-16: LGTM: Collection type properly extended

The Collection type definition is appropriately extended to include new collection types needed for the ActionItem GraphQL implementation.


28-30: LGTM: Collections array updated accordingly

The collections array is updated to include the new collection types, ensuring they'll be properly processed by the insertCollections function.

src/graphql/inputs/MutationDeleteActionItemInput.ts (3)

1-7: LGTM: Well-structured input schema

The input schema for deleting action items is correctly defined using Zod, with proper validation for the id field.


9-21: LGTM: GraphQL input reference properly implemented

The GraphQL input reference is well-structured with appropriate descriptions and field definitions.


21-21:

✅ Verification successful

Fix formatting issue

The pipeline failure indicates a formatting issue with line 21. Please ensure there's no extra whitespace or newline at the end of the file.


🏁 Script executed:

#!/bin/bash
# Check for formatting issues in the file
cat src/graphql/inputs/MutationDeleteActionItemInput.ts | tail -n 3

Length of output: 87


Formatting Verification:
After reviewing the tail output of the file, the last three lines are as follows:

  • }),
  • }),
  • });

There isn’t an obvious extra blank line after the closing brace. However, please double-check that none of these lines contain any trailing whitespace (e.g., spaces or tabs after the final visible character) or an unintended extra newline beyond what your formatter or linter expects. Once you confirm that all trailing whitespace is removed and the file ends exactly with the final closing line, the formatting issue should be resolved.

🧰 Tools
🪛 GitHub Actions: Pull request workflow

[error] 21-22: Formatter would have printed the following content: - → }); + → });

src/graphql/types/ActionItem/ActionItem.ts (1)

1-5: Imports and type definitions look good.

No issues detected with importing actionsTable or defining ActionItem from its inferred type. This setup is clean and straightforward.

scripts/dbManagement/sample_data/action_items.json (1)

24-24: Confirm handling of empty strings for “updatedAt.”

Several entries use an empty string ("") for updatedAt. If your schema or data import expects null for unknown or no updates, consider using null instead of an empty string to avoid confusion or parsing errors.

Also applies to: 56-56, 88-88, 104-104, 136-136, 152-152, 184-184, 200-200, 216-216, 232-232

src/graphql/types/Mutation/deleteActionItem.ts (1)

108-119: Overall deletion logic looks correct.
The database deletion and return logic is straightforward, with proper error handling if the deletion fails. Great job ensuring an unexpected error is thrown when no item is deleted.

src/graphql/types/ActionItemCategory/ActionItemCategory.ts (1)

45-81:

❓ Verification inconclusive

Consider implementing access control for organization-specific data.
The query currently allows any authenticated user to fetch categories by ID, regardless of organization membership. If categories are intended to be organization-restricted data, you may need to validate the requester's membership or role.

You can confirm whether membership checks are required by searching for existing patterns in the repository:


🏁 Script executed:

#!/bin/bash
# Searching for membership validation references in queries or resolvers
rg -A 10 "membership" 

Length of output: 87847


Action Required: Confirm Organization-Specific Access Control

The resolver in src/graphql/types/ActionItemCategory/ActionItemCategory.ts (lines 45–81) currently returns action item categories for any authenticated user without checking if the user belongs to the organization that should have access. We’ve observed multiple patterns across the codebase (e.g., in various organization and membership-related queries/mutations) where a membership or role check is enforced to restrict access to organization-specific data.

  • If these action item categories are intended to be organization-restricted, please add a check to ensure the requester’s organization membership or proper role before fetching categories.
  • Otherwise, if these categories are meant to be globally accessible, please confirm and document why additional access controls are not necessary.
src/graphql/types/ActionItem/assignee.ts (1)

44-53: Great resolver implementation.
Resolving the assignee field by checking assigneeId and throwing a precise error when the user is not found is solid and consistent with your error-handling approach.

src/graphql/types/ActionItem/createdAt.ts (2)

1-66: Effective Access Control Checks

The resolver comprehensively verifies user authentication and administrator-level permissions before exposing the createdAt field. This approach helps protect sensitive data and aligns well with best practices for field-level access control.


68-76: Field Implementation is Correct

Wiring the createdAt resolver into the ActionItem type is properly done. Defining the field description and return type ensures that consumers of the GraphQL schema clearly understand the createdAt field's purpose and data type.

src/graphql/types/Query/Events.ts (1)

60-96: Confirm Membership-Based Access or Make It Explicit

Currently, the query retrieves and returns events based solely on matching IDs, without an explicit check on membership roles contained in organization.membershipsWhereOrganization. If events are supposed to be accessible only to those within a specific organization or role, consider filtering these results accordingly or confirming that all authenticated users may view them.

Do you want me to generate a script to search for any membership-based access checks in the codebase to confirm there is no oversight?

src/graphql/inputs/MutationUpdateActionItemInput.ts (1)

1-16: Logical Use of Base Schema

Picking the necessary fields (postCompletionNotes, preCompletionNotes, categoryId, assigneeId, isCompleted) and then extending with id is a clear approach for an update schema. This ensures any extraneous fields in actionsTableInsertSchema are excluded for updates.

test/graphql/types/gql.tada-cache.d.ts (1)

95-96: Mutation entry looks correct.
The newly added mutation definition for Mutation_joinPublicOrganization appears well-structured and consistent with the surrounding typed document nodes.

src/graphql/types/Query/ActionItem.ts (5)

1-8: Imports and setup are cohesive.
The import statements and initial setup lines are clear and properly reference the necessary modules.


10-12: Schema definition is explicit.
The Zod object schema for the query arguments is concise and provides a strong foundation for validating the input structure.


31-39: Good authentication guard.
Throwing an exception when the user is not authenticated protects the action items from unauthorized access.


41-58: Robust argument validation.
Using Zod’s safeParse and mapping error messages to the issues array helps keep error handling consistent and transparent.


160-164: Return value is clear.
Returning all action items in an array aligns with common query patterns. No problems spotted.

src/graphql/types/Query/ActionCategory.ts (6)

10-14: Zod schema for organization ID is well-defined.
Requiring a valid UUID ensures better data integrity and less confusion when handling incorrect IDs.


16-23: Input type generation is straightforward.
Mapping organizationId to a required string field cleanly integrates with the Zod schema.


45-51: Authentication guard is in place.
Ensuring that the current client is authenticated prevents unauthorized queries.


95-109: Organization existence check is appropriate.
Returning a clear error when the organization does not exist helps the client handle missing or invalid references.


111-113: Empty array return pattern is consistent.
Providing an empty list when no categories are found avoids null checks on the client side.


115-116: Final return logic is sound.
Returns the queried categories with no extraneous transformations.

package.json (2)

35-35:

✅ Verification successful

Consider verifying whether both “uuidv7” and “uuid” dependencies are needed.

There may be overlapping functionality with “uuidv7” and “uuid”. If only one is needed, removing the other could simplify maintenance.

To confirm usage of both, run a code search to see how they are referenced:


🏁 Script executed:

#!/bin/bash
# Searching for references to "uuid" and "uuidv7" throughout the codebase
fd '\.(js|ts|json)$' | xargs rg -A 3 'uuid\('
fd '\.(js|ts|json)$' | xargs rg -A 3 'uuidv7\('

Length of output: 65984


Actionable: No dependency removal required

After verifying the codebase, both the “uuid” and “uuidv7” tokens are used distinctly. The “uuid” dependency (version ^11.1.0 in package.json) appears throughout the schema definitions and various modules (e.g., in drizzle table definitions for foreign keys), while “uuidv7” is specifically used as the default generator for primary key columns and in test cases. There is no functional overlap that would allow consolidation of these dependencies without affecting intended behavior.

Recommendation: Leave both dependencies as they are, but consider adding documentation or comments to clarify the distinct roles of “uuid” versus “uuidv7” for future maintainability.


79-79:

❓ Verification inconclusive

Check references to the old debug port.

Lines 79, 91, 103, and 105 now rely on port 9230 instead of 9229. Please confirm that all references (documentation, scripts, etc.) to the old port are updated to avoid confusion.

Also applies to: 91-91, 103-103, 105-105


🏁 Script executed:

#!/bin/bash
# Search for references to the old port number 9229 in the entire repo
rg '9229'

Length of output: 9


Verify that all debugging references have been fully updated.
Our automated search for "9229" using rg did not return any results, which suggests that the old debug port is no longer present in the repository. In package.json, lines 79, 91, 103, and 105 now correctly reference port 9230. However, to be completely confident that no documentation, configuration, or auxiliary scripts still mention port 9229, please perform a manual verification of all related files.

  • Confirm that no markdown, configuration, or additional script files reference port 9229.
  • Double-check any external documentation or setup instructions to ensure they have also been updated to port 9230.
src/graphql/types/Mutation/updateActionItem.ts (2)

222-296:

❓ Verification inconclusive

Confirm authorization for “markActionItemAsPending”.

This mutation does not check administrative or ownership credentials. Verify if all authenticated users should have the ability to reset completed items to pending.


🏁 Script executed:

#!/bin/bash
# Searching for any related role checks in the code
rg -A 5 'markActionItemAsPending'

Length of output: 809


Authorization Confirmation Required for markActionItemAsPending

The mutation still only verifies that the client is authenticated, without any additional checks for administrative rights or ownership. Please confirm whether allowing any authenticated user to reset a completed action item to pending is the intended behavior or if additional authorization checks (e.g., role or ownership validation) are required.


198-203:

✅ Verification successful

Verify automatic “updatedAt” handling.

Since updatedAt uses $onUpdate in the schema, ensure Drizzle automatically applies it without explicitly setting updatedAt. Otherwise, consider adding it here for clarity.


🏁 Script executed:

#!/bin/bash
# Searching references to updatedAt in the table definitions
rg -A 5 'updatedAt'
# Checking if $onUpdate is triggered automatically in Drizzle
# (No direct test possible here, but the search above helps confirm usage.)

Length of output: 75130


Action: Confirming automatic “updatedAt” functionality

The investigation shows that our schema consistently configures the “updatedAt” column using a default function (which in our context implements the $onUpdate behavior) rather than updating it manually. In the updateActionItem mutation, we’re correctly omitting an explicit “updatedAt” set since Drizzle is expected to update it automatically upon record modification.

No changes are required in this area, but please verify that your environment continues to honor the automated updatedAt behavior as defined in our schema.

src/graphql/types/Mutation/createActionItem.ts (3)

20-39: Overall mutation definition looks solid.

The structure for createActionItem is clean and well-typed. Good use of descriptive arguments and builder inputs.


40-131: Inline membership and resource checks appear consistent.

This aligns with the retrieved learnings indicating such validations should remain inline. The checks for organization, membership, category, and assignee are thorough.


142-142: Question the default completion date on creation.

Currently, completionAt: new Date() sets the item as “completed at creation,” which might conflict with the usual flow if the item is not actually completed yet. Consider setting this to null or a future date logic.

- completionAt: new Date(),
+ completionAt: null,
src/graphql/types/Query/organizationUsers.ts (2)

93-125: Confirm permission requirements for usersByOrganizationId.

This query fetches all users in an organization but does not explicitly check if the caller is authenticated or authorized. If public access is not intended, consider adding an authentication and membership check.


127-189: Query for events includes authentication checks.

The additional authentication gating in eventsByOrganizationId is consistent with best practices, helping safeguard sensitive event data.

scripts/dbManagement/helpers.ts (4)

17-17: UUID import is appropriate for fallback generation.

The use of uuidv4 here is logical for IDs whose length is not standard. No concerns noted.


510-537: Action categories insertion logic is clean.

Handling createdAt and updatedAt with fallbacks to the current date looks good.


539-587: Check id length for action items is beneficial.

Replacing invalid IDs with a new UUID ensures data consistency. This is a good safeguard.


632-633: Including “action_items” and “events” in record count checks.

Tracking these tables in checkDataSize is consistent with the new insertion logic.

schema.graphql (9)

280-282: New input type 'CategoriesByIdsInput'.
This input type correctly enforces non-nullability on the list elements by using [ID!]!. It is straightforward and looks good.


607-610: New 'EventsByOrganizationIdInput' input type.
The input is concise and correctly requires an organizationId of type ID!.


1389-1391: New 'MarkActionItemAsPendingInput' input type.
This minimal input type (requiring only the action item id) appears effective for marking an action item as pending.


1590-1592: 'markActionItemAsPending' mutation added.
This mutation is designed to reset a completed action item back to a pending state. Please verify that the associated resolver sets or clears the appropriate fields (for example, ensuring that completion-related timestamps or notes are reset correctly) according to your business logic.


1602-1607: 'updateActionItem' mutation added.
This mutation facilitates updating key fields of an action item (such as assigneeId, categoryId, isCompleted, and related notes). It’s important that the resolver for this mutation performs the necessary validations—such as ensuring valid state transitions—and handles relational updates appropriately.


3210-3212: Query field for fetching action item categories by IDs added.
The categoriesByIds query uses the CategoriesByIdsInput to return an array of non-null ActionItemCategory objects. This is clear and consistent with the input definition.


3351-3354: New 'QueryEventsByIdsInput' input type added.
This input type enforces that a list of event IDs (all non-null) must be provided, which should help ensure robust query behavior.


3701-3704: New 'UsersByIdsInput' input type added.
This is a clean and well-defined input for batch-fetching users by their IDs.


3182-3197: New query fields for fetching action item categories and action items by organization.
The queries actionCategoriesByOrganization and actionItemsByOrganization provide flexible ways to fetch action item–related data linked to a specific organization. Both fields are well documented, and the use of input types helps enforce the required filtering criteria. One suggestion is to ensure that, in the case of no matching records, the resolvers return an empty list rather than null to simplify client-side handling.

test/graphql/types/gql.tada.d.ts (4)

5-5: Well-structured ActionItem GraphQL type

The ActionItem type includes all necessary fields for comprehensive action item management, including relationships with users (assignee, creator), events, and categorization. The inclusion of separate fields for pre and post-completion notes provides flexibility for action item tracking through its full lifecycle.


6-6: Well-defined ActionItemCategory type

The ActionItemCategory type appropriately supports organization scoping and includes the isDisabled flag, which provides for soft deletion or temporary deactivation of categories without removing them from the database.


177-177: Complete CRUD operations for ActionItem

The implementation properly provides a full set of CRUD operations for ActionItems through both Query and Mutation types. The query operations appropriately support organization-scoped retrieval, which maintains proper data isolation in a multi-tenant context.

Also applies to: 69-69


22-22: Efficient batch fetching with IDs input types

The implementation of CategoriesByIdsInput and UsersByIdsInput enables efficient batch fetching of related entities, which is important for optimizing resolver performance when retrieving assignees, creators, and categories for action items.

Also applies to: 222-222

@Cioppolo14
Copy link
Contributor

@NishantSinghhhhh Please make sure it gets linked to the original issue. Please fix the failed tests and get code rabbits approval.

Signed-off-by: NishantSinghhhhh <[email protected]>
@NishantSinghhhhh
Copy link
Author

@palisadoes sir , @aashimawadhwa ma'am, some 7 testing files are failing, should I open new issues for them or solve them in my PR only ???

Signed-off-by: NishantSinghhhhh <[email protected]>
@NishantSinghhhhh
Copy link
Author

NishantSinghhhhh commented Mar 22, 2025

Screenshot from 2025-03-22 18-24-23

All tests are passing for deleteActionItem

@palisadoes
Copy link
Contributor

Solve the failures in this PR. We cannot merge failing code

Signed-off-by: NishantSinghhhhh <[email protected]>
@NishantSinghhhhh
Copy link
Author

@palisadoes sir , there is some problem in the CI/CD Workflow , and we are currently solving it

NishantSinghhhhh and others added 9 commits March 24, 2025 02:37
Signed-off-by: NishantSinghhhhh <[email protected]>
Signed-off-by: NishantSinghhhhh <[email protected]>
Signed-off-by: NishantSinghhhhh <[email protected]>
Signed-off-by: NishantSinghhhhh <[email protected]>
Signed-off-by: NishantSinghhhhh <[email protected]>
Signed-off-by: NishantSinghhhhh <[email protected]>
Signed-off-by: NishantSinghhhhh <[email protected]>
@NishantSinghhhhh
Copy link
Author

@palisadoes sir, @DMills27 sir , @aashimawadhwa ma'am , I have added tests for all the files that i created for action Items, The CI/CD pipline is causing errors right now so, I will be correcting it now

@bandhan-majumder
Copy link

bandhan-majumder commented Mar 25, 2025

@NishantSinghhhhh

CI/CD is working good. If you see the logs, it's failing because of one related testcase.

image

I have raised on PR with sample change and it passed correctly.

@palisadoes
Copy link
Contributor

  1. Please make coderabbit.ai approves your work.
  2. Resolve any conflicting files
  3. Make sure all tests pass and are valid.
  4. Ensure the test code coverage for your patch reaches as close to 100% as possible.

Signed-off-by: NishantSinghhhhh <[email protected]>
Signed-off-by: NishantSinghhhhh <[email protected]>
Signed-off-by: NishantSinghhhhh <[email protected]>
Copy link

codecov bot commented Mar 27, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 57.28%. Comparing base (6561b05) to head (2246af5).
Report is 1 commits behind head on develop-postgres.

Additional details and impacted files
@@                 Coverage Diff                  @@
##           develop-postgres    #3385      +/-   ##
====================================================
+ Coverage             57.02%   57.28%   +0.26%     
====================================================
  Files                   498      517      +19     
  Lines                 38420    39985    +1565     
  Branches               1512     1600      +88     
====================================================
+ Hits                  21909    22906     +997     
- Misses                16502    17070     +568     
  Partials                  9        9              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@NishantSinghhhhh
Copy link
Author

@coderabbitai full review

Copy link

coderabbitai bot commented Mar 27, 2025

✅ Actions performed

Full review triggered.

@NishantSinghhhhh
Copy link
Author

@palisadoes sir , @meetulr sir ,can you review this PR

@mpdesai90
Copy link

Please fix the failing tests.

@palisadoes
Copy link
Contributor

Please fix the conflicting files

Signed-off-by: NishantSinghhhhh <[email protected]>
@NishantSinghhhhh
Copy link
Author

@coderabbitai full review

Copy link

coderabbitai bot commented Mar 28, 2025

✅ Actions performed

Full review triggered.

@palisadoes palisadoes merged commit eec3734 into PalisadoesFoundation:develop-postgres Mar 28, 2025
16 of 17 checks passed
@Piyushk8
Copy link

Piyushk8 commented Mar 31, 2025

@NishantSinghhhhh hey, did you introduce any mutation for create actionCategory and tell me how did you test this please?

@palisadoes
Copy link
Contributor

@Piyushk8 Are you saying that action item categories is missing in the DB?

@Piyushk8
Copy link

Piyushk8 commented Apr 2, 2025

@Piyushk8 Are you saying that action item categories is missing in the DB?

The database table exists but I didn't find any Graphql mutations to create any instance of it,
to even test this action items category will be required for it . Even in the test file it was hard coded .

Just wanted to know how the author of the PR handled it

@palisadoes
Copy link
Contributor

@Piyushk8 Create an issue to fix this. We need to restore the API functionality as it used to be.

@meetulr
Copy link
Contributor

meetulr commented Apr 2, 2025

It seems this PR was merged prematurely... There was much to be corrected here.

@palisadoes
Copy link
Contributor

Unfortunately it cannot be merged automatically.

@palisadoes
Copy link
Contributor

@Piyushk8 Do you want to work on the reopened issue?

@Piyushk8
Copy link

Piyushk8 commented Apr 2, 2025

@Piyushk8 Do you want to work on the reopened issue?

To implement this in the Frontend, events need to handled first so should I go with the basic event functionality that is in API already , (no recurring events support)

Otherwise it will need further changes depending on events which is still in discussion

@palisadoes
Copy link
Contributor

The basic functionality. Please ask to be assigned the issue, unless you have too many already

Copy link
Contributor

@meetulr meetulr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add field resolvers to the Organization schema for actionItemCategories and actionItems.
Add a field resolver to the ActionItemCategory schema for actionItems.

Name the tables actionItemCategories, and actionItems.

Please maintain clear code separation and formatting, and follow the practices of the codebase... Proper table, schema, query names. Keep inputs, queries, mutations... where they belong, etc.

Fix all these in your current api pr or in a new pr. Take a thorough look, if there are things I've missed, fix them as well.

@NishantSinghhhhh
Copy link
Author

Sir I have added all these changes, and now will be adding tests for the file

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ignore-sensitive-files-pr The contributor has a legitimate reason for editiing protected files
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants