directus
1import { ContainsNullValuesError } from '@directus/errors';
2import type { OracleError } from './types.js';
3
4enum OracleErrorCodes {
5'CONTAINS_NULL_VALUES' = 2296,
6// @TODO extend with other errors
7}
8
9export function extractError(error: OracleError): OracleError | Error {
10switch (error.errorNum) {
11case OracleErrorCodes.CONTAINS_NULL_VALUES:
12return containsNullValues(error);
13default:
14return error;
15}
16}
17
18function containsNullValues(error: OracleError): OracleError | InstanceType<typeof ContainsNullValuesError> {
19const betweenQuotes = /"([^"]+)"/g;
20const matches = error.message.match(betweenQuotes);
21
22if (!matches) return error;
23
24const collection = matches[0]!.slice(1, -1);
25const field = matches[1]!.slice(1, -1);
26
27return new ContainsNullValuesError({ collection, field });
28}
29