Skip to content

Commit

Permalink
[flexible-schema] Add reserved keyword check on object creation (twen…
Browse files Browse the repository at this point in the history
…tyhq#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.
  • Loading branch information
Weiko authored May 6, 2024
1 parent 2828492 commit 154ae99
Showing 1 changed file with 16 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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.',
Expand Down

0 comments on commit 154ae99

Please sign in to comment.