c693c4d9cf
closes https://github.com/twentyhq/core-team-issues/issues/1418 Tested : - findOne on Rest and Gql ### Vision #### Common - Common is kind of renamed Gql base resolver - Common handles args (filter, values, ...) validation - Common accepts depth or raw gql selected fields to compute selectedFields - Common is directly called by each CommonQueries (findOne, ...) service, which extend CommonBaseQuery service - Common sequence : | - Parse & Validate args (args-handlers, to create) | - Build query (query-parsers : currently in gql-query-parsers, to move) | - Execute query | - Fetch relation + format #### Rest - Simple parsing (without metadata validation) - Calling Common API - Simple rest response formatting #### Gql - Calling Common API
20 lines
709 B
TypeScript
20 lines
709 B
TypeScript
import { type QueryFailedError } from 'typeorm';
|
|
|
|
import { CommonQueryRunnerException } from 'src/engine/api/common/common-query-runners/errors/common-query-runner.exception';
|
|
import { commonQueryRunnerToRestApiExceptionHandler } from 'src/engine/api/common/common-query-runners/utils/common-query-runner-to-rest-api-exception-handler.util';
|
|
|
|
interface QueryFailedErrorWithCode extends QueryFailedError {
|
|
code: string;
|
|
}
|
|
|
|
export const workspaceQueryRunnerRestApiExceptionHandler = (
|
|
error: QueryFailedErrorWithCode,
|
|
): never => {
|
|
switch (true) {
|
|
case error instanceof CommonQueryRunnerException:
|
|
return commonQueryRunnerToRestApiExceptionHandler(error);
|
|
default:
|
|
throw error;
|
|
}
|
|
};
|