prisma1-upgrade
prisma1-upgrade copied to clipboard
Last step of the prisma upgrade cli adds duplicates and unnecessary data
After the last step of the upgrade CLI (adding attributes and other data that is not caught by the introspection tool) the 'schema.prisma' file becomes invalid:
- The field
orderResultFormPipelineClientInfoId
appears twice. - The attribute
@map
is present on the relation field.
As an example here is the model QuoteRow
and how it looks in the prisma1 schema, prisma2 schema before the last step of the upgrade CLI, prisma2 schema after the last step of the upgrade CLI and a screenshot from the DB(Postgres).
- Prisma 1 schema
type QuoteRow {
id: ID! @id @unique @identifier @always
parentQuote: Quote!
quoteResultFormPipelineClientInfo: FormPipelineClientInfo @relation(name: "QuoteRowQuoteResultFormPipelineClientInfo", onDelete: CASCADE, link: INLINE)
orderResultFormPipelineClientInfo: FormPipelineClientInfo @relation(name: "QuoteRowOrderResultFormPipelineClientInfo", onDelete: CASCADE, link: INLINE)
lastYieldPipelineBody: Json
lastOfferingSubSlug: String!
lastOfferingResult: Json!
lastQuoteResult: Json!
}
- Prisma2 schema (before the last step of the upgrade CLI)
model QuoteRow {
id String @id @default(cuid()) @db.VarChar(30)
lastYieldPipelineBody Json?
lastOfferingSubSlug String
lastOfferingResult Json
lastQuoteResult Json
quoteResultFormPipelineClientInfo String? @db.VarChar(30)
parentQuote String? @db.VarChar(30)
orderResultFormPipelineClientInfo String? @db.VarChar(30)
FormPipelineClientInfo_FormPipelineClientInfoToQuoteRow_orderResultFormPipelineClientInfo FormPipelineClientInfo? @relation("FormPipelineClientInfoToQuoteRow_orderResultFormPipelineClientInfo", fields: [orderResultFormPipelineClientInfo], references: [id])
Quote Quote? @relation(fields: [parentQuote], references: [id])
FormPipelineClientInfo_FormPipelineClientInfoToQuoteRow_quoteResultFormPipelineClientInfo FormPipelineClientInfo? @relation("FormPipelineClientInfoToQuoteRow_quoteResultFormPipelineClientInfo", fields: [quoteResultFormPipelineClientInfo], references: [id])
Offering Offering[]
}
- Prisma2 schema (after the last step of the upgrade CLI)
model QuoteRow {
id String @default(cuid()) @id @db.VarChar(30)
lastYieldPipelineBody Json?
lastOfferingSubSlug String
lastOfferingResult Json
lastQuoteResult Json
quoteResultFormPipelineClientInfoId String? @map("quoteResultFormPipelineClientInfo") @db.VarChar(30)
parentQuoteId String? @map("parentQuote") @db.VarChar(30)
orderResultFormPipelineClientInfoId String? @map("orderResultFormPipelineClientInfo") @db.VarChar(30)
orderResultFormPipelineClientInfoId FormPipelineClientInfo? @map("orderResultFormPipelineClientInfo") @relation("FormPipelineClientInfoToQuoteRow_orderResultFormPipelineClientInfo", fields: [orderResultFormPipelineClientInfo], references: [id])
parentQuote Quote? @relation(fields: [parentQuote], references: [id])
orderResultFormPipelineClientInfo FormPipelineClientInfo? @relation("FormPipelineClientInfoToQuoteRow_quoteResultFormPipelineClientInfo", fields: [quoteResultFormPipelineClientInfo], references: [id])
Offering Offering[]
}
- Screenshot from the DB:

It seems to me that this might be one of the valid variants:
model QuoteRow {
id String @default(cuid()) @id @db.VarChar(30)
lastYieldPipelineBody Json?
lastOfferingSubSlug String
lastOfferingResult Json
lastQuoteResult Json
orderResultFormPipelineClientInfoId String? @db.VarChar(30)
quoteResultFormPipelineClientInfoId String? @db.VarChar(30)
parentQuoteId String @db.VarChar(30)
orderResultFormPipelineClientInfo FormPipelineClientInfo? @relation("orderResultFormPipelineClientInfo", fields: [orderResultFormPipelineClientInfoId], references: [id])
quoteResultFormPipelineClientInfo FormPipelineClientInfo? @relation("quoteResultFormPipelineClientInfo", fields: [quoteResultFormPipelineClientInfoId], references: [id])
parentQuote Quote @relation(fields: [parentQuoteId], references: [id])
Offering Offering[]
}
We forked the repo to deal with some of this (and fix some other issues). While I can't guarantee it's going to solve all your problems, it helps with many of them: https://github.com/reibus/prisma-upgrade