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>
85 lines
1.9 KiB
TypeScript
85 lines
1.9 KiB
TypeScript
import { Field, HideField, InputType } from '@nestjs/graphql';
|
|
|
|
import { BeforeCreateOne } from '@ptc-org/nestjs-query-graphql';
|
|
import {
|
|
IsBoolean,
|
|
IsNotEmpty,
|
|
IsOptional,
|
|
IsString,
|
|
IsUUID,
|
|
} from 'class-validator';
|
|
import GraphQLJSON from 'graphql-type-json';
|
|
|
|
import { FieldMetadataSettings } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-settings.interface';
|
|
|
|
import { IsValidMetadataName } from 'src/engine/decorators/metadata/is-valid-metadata-name.decorator';
|
|
import { BeforeCreateOneObject } from 'src/engine/metadata-modules/object-metadata/hooks/before-create-one-object.hook';
|
|
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
|
|
|
@InputType()
|
|
@BeforeCreateOne(BeforeCreateOneObject)
|
|
export class CreateObjectInput {
|
|
@IsString()
|
|
@IsNotEmpty()
|
|
@Field()
|
|
@IsValidMetadataName()
|
|
nameSingular: string;
|
|
|
|
@IsString()
|
|
@IsNotEmpty()
|
|
@Field()
|
|
@IsValidMetadataName()
|
|
namePlural: string;
|
|
|
|
@IsString()
|
|
@IsNotEmpty()
|
|
@Field()
|
|
labelSingular: string;
|
|
|
|
@IsString()
|
|
@IsNotEmpty()
|
|
@Field()
|
|
labelPlural: string;
|
|
|
|
@IsString()
|
|
@IsOptional()
|
|
@Field({ nullable: true })
|
|
description?: string;
|
|
|
|
@IsString()
|
|
@IsOptional()
|
|
@Field({ nullable: true })
|
|
icon?: string;
|
|
|
|
@HideField()
|
|
dataSourceId: string;
|
|
|
|
@HideField()
|
|
workspaceId: string;
|
|
|
|
@IsUUID()
|
|
@IsOptional()
|
|
@Field({ nullable: true })
|
|
labelIdentifierFieldMetadataId?: string;
|
|
|
|
@IsUUID()
|
|
@IsOptional()
|
|
@Field({ nullable: true })
|
|
imageIdentifierFieldMetadataId?: string;
|
|
|
|
@IsBoolean()
|
|
@IsOptional()
|
|
@Field({ nullable: true })
|
|
isRemote?: boolean;
|
|
|
|
@IsOptional()
|
|
@Field({ nullable: true })
|
|
primaryKeyColumnType?: string;
|
|
|
|
@IsOptional()
|
|
@Field(() => GraphQLJSON, { nullable: true })
|
|
primaryKeyFieldMetadataSettings?: FieldMetadataSettings<
|
|
FieldMetadataType | 'default'
|
|
>;
|
|
}
|