Etienne
2025-08-04 19:06:40 +02:00
committed by GitHub
parent 932910e71e
commit 3c485ccb37
4 changed files with 190 additions and 22 deletions
@@ -5,12 +5,18 @@ import { WorkspaceQueryRunnerOptions } from 'src/engine/api/graphql/workspace-qu
import { UserInputError } from 'src/engine/core-modules/graphql/utils/graphql-errors.util';
interface PostgreSQLError extends QueryFailedError {
detail?: string;
}
export const handleDuplicateKeyError = (
error: QueryFailedError,
error: PostgreSQLError,
context: WorkspaceQueryRunnerOptions,
) => {
const indexNameMatch = error.message.match(/"([^"]+)"/);
const duplicatedValues = error?.detail?.match(/=\(([^)]+)\)/)?.[1];
if (indexNameMatch) {
const indexName = indexNameMatch[1];
@@ -42,9 +48,9 @@ export const handleDuplicateKeyError = (
if (affectedColumns?.length === 1) {
throw new UserInputError(
`Duplicate ${columnNames}. Please set a unique one.`,
`Duplicate ${columnNames} ${duplicatedValues ? `with value ${duplicatedValues}` : ''}. Please set a unique one.`,
{
userFriendlyMessage: `This ${columnNames.toLowerCase()} is already taken. Please choose a different value.`,
userFriendlyMessage: `This ${columnNames.toLowerCase()} ${duplicatedValues ? `with value ${duplicatedValues}` : ''} is already taken. Please choose a different value.`,
},
);
}