#Error connecting models

2 messages · Page 1 of 1 (latest)

dusk salmon
#

I have the following models:


model EstablishmentService {
  id                Int    @id @default(autoincrement())
  priceInCents      String
  durationInMinutes String

  establishment   Establishment?                        @relation(fields: [establishmentId], references: [id])
  establishmentId Int?
  service         Service?                              @relation(fields: [serviceId], references: [id])
  serviceId       Int?
  professionals   ProfessionalsOnEstablismentServices[]
}

model ProfessionalsOnEstablismentServices {
  establishmentService   EstablishmentService @relation(fields: [establishmentServiceId], references: [id])
  establishmentServiceId Int

  professional   Professional @relation(fields: [professionalId], references: [id])
  professionalId Int

  @@id([professionalId, establishmentServiceId])
}

model Service {
  id                   Int                    @id @default(autoincrement())
  name                 String
  establishmentService EstablishmentService[]
}

model Professional {
  id              Int                                   @id @default(autoincrement())
  roles           Role[]
  services        ProfessionalsOnEstablismentServices[]
  establishment   Establishment?                        @relation(fields: [establishmentId], references: [id])
  establishmentId Int?
  appointment     AppointmentProfessional[]
  appointmentId   Int?
  personalInfo    User?                                 @relation(fields: [userId], references: [id])
  userId          Int?                                  @unique
}

I want to be able to update a establishmentService and add a professional to it by passing an array of professionals Ids.

#

I did it this way:

  async update(
    id: number,
    updateEstablishmentServiceDTO: UpdateEstablishmentServiceDTO,
  ) {
    const connections = updateEstablishmentServiceDTO.professionals.map(
      (professional) => {
        return {
          professionalId_establishmentServiceId: {
            professionalId: professional.id,
            establishmentServiceId: id,
          },
        };
      },
    );

    return this.prisma.establishmentService.update({
      where: { id },
      data: {
        ...updateEstablishmentServiceDTO,
        professionals: {
          connect: connections,
        },
      },
    });
  }