Olá.
Estou com duas dúvidas neste exercício sobre relacionamentos no Prisma. A questão era qual resposta criava o modelo Recommendation de modo que fosse possível rastrear a pessoa que fez uma recomendação de livro e a pessoa que recebeu a recomendação.
A resposta indicada como correta foi essa:
model User {
id Int @id @default(autoincrement())
recommendationsMade Recommendation[] @relation("Recommender")
recommendationsReceived Recommendation[] @relation("Recommendee")
}
model Recommendation {
id Int @id @default(autoincrement())
bookId Int
recommenderId Int @relation(name: "Recommender", fields: [recommenderId], references: [id])
recommendeeId Int @relation(name: "Recommendee", fields: [recommendeeId], references: [id])
book Book @relation(fields: [bookId], references: [id])
recommender User @relation(name: "Recommender")
recommendee User @relation(name: "Recommendee")
}
Minha primeira dúvida é com relação ao jeito como foi criado o relacionamento em Recommendation, pois está diferente de como foi ensinado na aula. Na resposta, o @relation
com fields
e references
está sendo colocado em recommenderId
, e não em recommender
. O certo não seria o contrário?
Ao invés de:
recommenderId Int @relation(name: "Recommender", fields: [recommenderId], references: [id])
recommender User @relation(name: "Recommender")
Não deveria ser:
recommenderId Int // para que colocar @relation aqui?
recommender User @relation(name: "Recommender", fields: [recommenderId], references: [id])
Ou isso não importa para o Prisma?
O mesmo probleme acontece para recommendeeId
e recommendee
.
Minha segunda dúvida é: por que a alternativa E foi considerada incorreta? Eu acredito que ela faz a mesma coisa (apresentando o mesmo problema com @relation
apontado acima), só usando nomes diferentes para as relações e propriedades. A própria explicação para a alternativa E diz que "tecnicamente possa ser uma abordagem válida". Talvez seria melhor modificar essa alternativa para ser de fato incorreta.
Obrigado.