Open thomtrp opened 1 month ago
To add exception handling to auto-resolvers, follow these steps:
Create a Custom Exception Handler:
remoteServerGraphqlApiExceptionHandler
in /packages/twenty-server/src/engine/metadata-modules/remote-server/utils/remote-server-graphql-api-exception-handler.util.ts
.
import { ConflictError, InternalServerError, NotFoundError, UserInputError } from 'src/engine/core-modules/graphql/utils/graphql-errors.util';
import { AutoResolverException, AutoResolverExceptionCode } from 'src/engine/metadata-modules/auto-resolver/auto-resolver.exception';
export const autoResolverGraphqlApiExceptionHandler = (error: any) => { if (error instanceof AutoResolverException) { switch (error.code) { case AutoResolverExceptionCode.AUTO_RESOLVER_NOT_FOUND: throw new NotFoundError(error.message); case AutoResolverExceptionCode.INVALID_AUTO_RESOLVER_INPUT: throw new UserInputError(error.message); case AutoResolverExceptionCode.AUTO_RESOLVER_ALREADY_EXISTS: throw new ConflictError(error.message); default: throw new InternalServerError(error.message); } } throw error; };
Integrate the Exception Handler in Resolvers:
/packages/twenty-server/src/engine/metadata-modules/auto-resolver/auto-resolver.resolver.ts
) to use the new exception handler.
import { autoResolverGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/auto-resolver/utils/auto-resolver-graphql-api-exception-handler.util';
@Resolver() export class AutoResolver { @Query(() => AutoResolverType) async getAutoResolver(@Args('id') id: string) { try { // Your existing logic } catch (error) { autoResolverGraphqlApiExceptionHandler(error); } } }
Update Exception Handler Service:
ExceptionHandlerService
is configured to capture exceptions from auto-resolvers. This might involve updating /packages/twenty-server/src/integrations/exception-handler/exception-handler.module.ts
if necessary./packages/twenty-server/src/engine/api/rest/errors/RestApiException.ts /packages/twenty-server/src/engine/utils/global-exception-handler.util.ts /packages/twenty-server/src/engine/integrations/exception-handler/hooks/use-exception-handler.hook.ts /packages/twenty-server/src/core/api-rest/api-rest.controller.utils.ts /packages/twenty-server/src/engine/api/graphql/metadata.module-factory.ts /packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/utils/remote-table-graphql-api-exception-handler.util.ts /packages/twenty-server/src/engine/metadata-modules/remote-server/remote-server.resolver.ts /packages/twenty-server/src/integrations/exception-handler/exception-handler.module.ts /packages/twenty-server/src/engine/metadata-modules/remote-server/utils/remote-server-graphql-api-exception-handler.util.ts /packages/twenty-server/src/filters/utils/global-exception-handler.util.ts