Compile with swc on twenty-server (#4863)

Experiment using swc instead of tsc (as we did the switch on
twenty-front)

It's **much** faster (at least 5x) but has stricter requirements.
I fixed the build but there's still an error while starting the server,
opening this PR for discussion.

Checkout the branch and try `nx build:swc twenty-server`

Read: https://docs.nestjs.com/recipes/swc#common-pitfalls
This commit is contained in:
Félix Malfait
2024-04-14 09:09:51 +02:00
committed by GitHub
parent f82b1ff9ef
commit 9aa24ed803
50 changed files with 600 additions and 152 deletions

View File

@ -1,6 +1,7 @@
import { Field, ObjectType, registerEnumType } from '@nestjs/graphql';
import { IsEnum, IsNotEmpty } from 'class-validator';
import { Relation } from 'typeorm';
import { FieldMetadataDTO } from 'src/engine/metadata-modules/field-metadata/dtos/field-metadata.dto';
import { ObjectMetadataDTO } from 'src/engine/metadata-modules/object-metadata/dtos/object-metadata.dto';
@ -22,19 +23,19 @@ registerEnumType(RelationDefinitionType, {
export class RelationDefinitionDTO {
@IsNotEmpty()
@Field(() => ObjectMetadataDTO)
sourceObjectMetadata: ObjectMetadataDTO;
sourceObjectMetadata: Relation<ObjectMetadataDTO>;
@IsNotEmpty()
@Field(() => ObjectMetadataDTO)
targetObjectMetadata: ObjectMetadataDTO;
targetObjectMetadata: Relation<ObjectMetadataDTO>;
@IsNotEmpty()
@Field(() => FieldMetadataDTO)
sourceFieldMetadata: FieldMetadataDTO;
sourceFieldMetadata: Relation<FieldMetadataDTO>;
@IsNotEmpty()
@Field(() => FieldMetadataDTO)
targetFieldMetadata: FieldMetadataDTO;
targetFieldMetadata: Relation<FieldMetadataDTO>;
@IsEnum(RelationDefinitionType)
@IsNotEmpty()

View File

@ -8,6 +8,7 @@ import {
OneToOne,
CreateDateColumn,
UpdateDateColumn,
Relation,
} from 'typeorm';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
@ -63,7 +64,7 @@ export class FieldMetadataEntity<
onDelete: 'CASCADE',
})
@JoinColumn({ name: 'objectMetadataId' })
object: ObjectMetadataEntity;
object: Relation<ObjectMetadataEntity>;
@Column({ nullable: false })
type: FieldMetadataType;
@ -105,13 +106,13 @@ export class FieldMetadataEntity<
() => RelationMetadataEntity,
(relation: RelationMetadataEntity) => relation.fromFieldMetadata,
)
fromRelationMetadata: RelationMetadataEntity;
fromRelationMetadata: Relation<RelationMetadataEntity>;
@OneToOne(
() => RelationMetadataEntity,
(relation: RelationMetadataEntity) => relation.toFieldMetadata,
)
toRelationMetadata: RelationMetadataEntity;
toRelationMetadata: Relation<RelationMetadataEntity>;
@CreateDateColumn({ type: 'timestamptz' })
createdAt: Date;