Brakebein/prisma-generator-nestjs-dto

Error: A circular dependency has been detected (property key: "createdBy"). Please, make sure that each side of a bidirectional relationships are using lazy resolvers ("type: () => ClassType").

Closed this issue · 3 comments

Entity definition for the 'Phones' model:

model Phones {
  createdBy Users? @relation("CreatedPhones", fields: [createdById], references: [id], onDelete: SetNull)
  updatedBy Users? @relation("UpdatedPhones", fields: [updatedById], references: [id], onDelete: SetNull)
  packages Packages @relation(fields: [packageId], references: [id])
  usages PhoneUsages[]
}

The generated entity class:

export class Phones {
  @ApiProperty({
    required: false,
    nullable: true,
  })
  createdBy?: Users | null;

  @ApiProperty({
    required: false,
    nullable: true,
  })
  updatedBy?: Users | null;

  @ApiProperty({
    required: false,
  })
  packages?: Packages;

  @ApiProperty({
    type: () => PhoneUsages,
    isArray: true,
    required: false,
  })
  usages?: PhoneUsages[];
}

When you manually set the type for 'createdBy' and 'updatedBy', or change the package version back to 1.17.4 the problem will be resolved:

export class Phones {
  @ApiProperty({
    type: () => Users,
    required: false,
    nullable: true,
  })
  createdBy?: Users | null;

  @ApiProperty({
    type: () => Users,
    required: false,
    nullable: true,
  })
  updatedBy?: Users | null;

  @ApiProperty({
    required: false,
  })
  packages?: Packages;

  @ApiProperty({
    type: () => PhoneUsages,
    isArray: true,
    required: false,
  })
  usages?: PhoneUsages[];
}
  1. nestjs v9++
  2. @brakebein/prisma-generator-nestjs-dto v1.18.3

Do you have any annotations available to specify the data type within the @ApiProperty decorator? Or any solution

Thanks for pointing out. The lazy resolver is already added if the field is a list, but not yet for the other fields. It should be a quick addition to add the lazy resovler if the field is a complex type/relation in general to avoid those errors.

With the latest release, this should now be resolved.

@Brakebein

Thank you for your fast response and work hardest, after update to latest, it works fineThank you so much for your quick response and hard work! I really appreciate it. After updating to the latest version, everything is working perfectly fine now.