[flexible-schema] Add reserved keyword check on object creation (#5303)

## Context
Because creating an object in metadata also generates a graphql type and
because graphql does not allow 2 types with the same name, we have to
manage a list of reserved keywords that can't be used as object names.

Currently we were maintaining a list of the core objects but we also
have to introduce composite fields that are also generated as gql types.
This commit is contained in:
Weiko 2024-05-06 13:44:40 +02:00 committed by GitHub
parent 2828492945
commit 154ae99ed3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -12,12 +12,24 @@ import {
import { CreateObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/create-object.input';
const coreObjectNames = [
'featureFlag',
'appToken',
'workspace',
'billingSubscription',
'billingSubscriptionItem',
'featureFlag',
'user',
'userWorkspace',
'workspace',
];
const reservedKeywords = [
...coreObjectNames,
'event',
'field',
'link',
'currency',
'fullName',
'address',
'links',
];
@Injectable()
@ -35,8 +47,8 @@ export class BeforeCreateOneObject<T extends CreateObjectInput>
}
if (
coreObjectNames.includes(instance.input.nameSingular) ||
coreObjectNames.includes(instance.input.namePlural)
reservedKeywords.includes(instance.input.nameSingular) ||
reservedKeywords.includes(instance.input.namePlural)
) {
throw new ForbiddenException(
'You cannot create an object with this name.',