Setup relations for remote objects (#5149)
New strategy: - add settings field on FieldMetadata. Contains a boolean isIdField and for numbers, a precision - if idField, the graphql scalar returned will be a GraphQL id. This will allow the app to work even for ids that are not uuid - remove globals dateScalar and numberScalar modes. These were not used - set limit as Integer - check manually in query runner mutations that we send a valid id Todo left: - remove WorkspaceBuildSchemaOptions since this is not used anymore. Will do in another PR --------- Co-authored-by: Thomas Trompette <thomast@twenty.com> Co-authored-by: Weiko <corentin@twenty.com>
This commit is contained in:
@ -1,18 +1,20 @@
|
||||
import { GraphQLID, GraphQLInt, GraphQLString } from 'graphql';
|
||||
|
||||
import { WorkspaceResolverBuilderMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface';
|
||||
|
||||
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
||||
import { InputTypeDefinitionKind } from 'src/engine/api/graphql/workspace-schema-builder/factories/input-type-definition.factory';
|
||||
import { getResolverArgs } from 'src/engine/api/graphql/workspace-schema-builder/utils/get-resolver-args.util';
|
||||
|
||||
describe('getResolverArgs', () => {
|
||||
const expectedOutputs = {
|
||||
findMany: {
|
||||
first: { type: FieldMetadataType.NUMBER, isNullable: true },
|
||||
last: { type: FieldMetadataType.NUMBER, isNullable: true },
|
||||
before: { type: FieldMetadataType.TEXT, isNullable: true },
|
||||
after: { type: FieldMetadataType.TEXT, isNullable: true },
|
||||
first: { type: GraphQLInt, isNullable: true },
|
||||
last: { type: GraphQLInt, isNullable: true },
|
||||
before: { type: GraphQLString, isNullable: true },
|
||||
after: { type: GraphQLString, isNullable: true },
|
||||
filter: { kind: InputTypeDefinitionKind.Filter, isNullable: true },
|
||||
orderBy: { kind: InputTypeDefinitionKind.OrderBy, isNullable: true },
|
||||
limit: { type: GraphQLInt, isNullable: true },
|
||||
},
|
||||
findOne: {
|
||||
filter: { kind: InputTypeDefinitionKind.Filter, isNullable: false },
|
||||
@ -28,14 +30,14 @@ describe('getResolverArgs', () => {
|
||||
data: { kind: InputTypeDefinitionKind.Create, isNullable: false },
|
||||
},
|
||||
updateOne: {
|
||||
id: { type: FieldMetadataType.UUID, isNullable: false },
|
||||
id: { type: GraphQLID, isNullable: false },
|
||||
data: { kind: InputTypeDefinitionKind.Update, isNullable: false },
|
||||
},
|
||||
deleteOne: {
|
||||
id: { type: FieldMetadataType.UUID, isNullable: false },
|
||||
id: { type: GraphQLID, isNullable: false },
|
||||
},
|
||||
executeQuickActionOnOne: {
|
||||
id: { type: FieldMetadataType.UUID, isNullable: false },
|
||||
id: { type: GraphQLID, isNullable: false },
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
import { GraphQLString, GraphQLInt, GraphQLID } from 'graphql';
|
||||
|
||||
import { WorkspaceResolverBuilderMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface';
|
||||
import { ArgMetadata } from 'src/engine/api/graphql/workspace-schema-builder/interfaces/param-metadata.interface';
|
||||
|
||||
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
||||
import { InputTypeDefinitionKind } from 'src/engine/api/graphql/workspace-schema-builder/factories/input-type-definition.factory';
|
||||
|
||||
export const getResolverArgs = (
|
||||
@ -11,19 +12,23 @@ export const getResolverArgs = (
|
||||
case 'findMany':
|
||||
return {
|
||||
first: {
|
||||
type: FieldMetadataType.NUMBER,
|
||||
type: GraphQLInt,
|
||||
isNullable: true,
|
||||
},
|
||||
last: {
|
||||
type: FieldMetadataType.NUMBER,
|
||||
type: GraphQLInt,
|
||||
isNullable: true,
|
||||
},
|
||||
before: {
|
||||
type: FieldMetadataType.TEXT,
|
||||
type: GraphQLString,
|
||||
isNullable: true,
|
||||
},
|
||||
after: {
|
||||
type: FieldMetadataType.TEXT,
|
||||
type: GraphQLString,
|
||||
isNullable: true,
|
||||
},
|
||||
limit: {
|
||||
type: GraphQLInt,
|
||||
isNullable: true,
|
||||
},
|
||||
filter: {
|
||||
@ -61,7 +66,7 @@ export const getResolverArgs = (
|
||||
case 'updateOne':
|
||||
return {
|
||||
id: {
|
||||
type: FieldMetadataType.UUID,
|
||||
type: GraphQLID,
|
||||
isNullable: false,
|
||||
},
|
||||
data: {
|
||||
@ -72,7 +77,7 @@ export const getResolverArgs = (
|
||||
case 'findDuplicates':
|
||||
return {
|
||||
id: {
|
||||
type: FieldMetadataType.UUID,
|
||||
type: GraphQLID,
|
||||
isNullable: true,
|
||||
},
|
||||
data: {
|
||||
@ -83,14 +88,14 @@ export const getResolverArgs = (
|
||||
case 'deleteOne':
|
||||
return {
|
||||
id: {
|
||||
type: FieldMetadataType.UUID,
|
||||
type: GraphQLID,
|
||||
isNullable: false,
|
||||
},
|
||||
};
|
||||
case 'executeQuickActionOnOne':
|
||||
return {
|
||||
id: {
|
||||
type: FieldMetadataType.UUID,
|
||||
type: GraphQLID,
|
||||
isNullable: false,
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user