[ RESOLVIDO ] - DÚVIDA - [ NEST JS, PRISMA] - FUNÇÃO CONNECT NA CRIAÇÃO
RESOLUÇÃO:
Descobrir que o prisma já faz por padrão o que eu queria, apenas o connect.
Tenho uma tabela de modelos de carros, um carro só pode ter um modelo mas um modelo pode ter vários carros, usando o Nest e Prisma, ao criar o carro, não consigo fazer um apenas connect, para associar o carro a um modelo já existente, mas sim, apenas o connectOrCreate(caso não tenha, ele irá criar), como resolver isso?
// Tabela de carros
model Cars {
id Int @id @default(autoincrement())
plateNumber String
modelKey Model? @relation(fields: [model], references: [modelName])
model String?
}
// Tabela de modelos de carros
model Model {
id Int @id @default(autoincrement())
modelName String @unique
Cars Cars[]
}
TABELA DE CARROS
id | plateNumber | model |
---|---|---|
1 | YBR-1025 | STRADA |
TABELA DE MODELOS
id | modelName | Cars |
---|---|---|
1 | STRADA | [2 CARS] |
2 | HILUX | [1 CARS] |
1 | PÁLIO | [5 CARS] |
Conteúdo do CreateCarDto:
import { Prisma } from '@prisma/client';
import { IsString } from 'class-validator';
import { Car } from '../entities/car.entity';
export class CreateCarDto extends Car {
@IsString()
plateNumber: string;
@IsString()
model?: string;
}
**Ao tentar criar usando o connect, não consigo obviamente porque o model está como String: **
create(data: CreateCarDto) {
return this.prisma.cars.create({
data: {
model: {
connect: data.model,
},
},
});
}
Erro que o Vs Code mostra:
O tipo '{ connect: string; }' não pode ser atribuído ao tipo 'string'.ts(2322)
index.d.ts(16797, 5): O tipo esperado vem da propriedade 'model', que é declarada aqui no tipo '(Without<CarsCreateInput, CarsUncheckedCreateInput> & CarsUncheckedCreateInput) | (Without<...> & CarsCreateInput)'
(property) model: {
connect: string;
}