Добавление Prisma1 и Prisma2 одновременно с обнаружением критических изменений
Для перехода от prisma1 к prisma2 мы решили оставить рядом primsa1 и prisma2. Бегnpx prisma-upgrade
создаст 2 критических изменения Fix one-to-many table relations
а также Fix one-to-one table relations
. Чтобы сделатьprisma1
а также prisma2
работать вместе, мы не будем запускать изменения SQL.
Пришло время постепенно перенести кодовую базу на prisma2:
Это модель данных 1.0 для пользователя:
type User {
id: ID! @unique
lastName: String!
firstName: String!
userRoleCompanies: [UserRoleCompanie!]! @relation(name: "UserRoleCompanieRelation", onDelete: CASCADE)
}
type UserRoleCompanie {
id: ID! @unique
isInvitationApproved: Boolean!
companie: Companie! @relation(name: "UserRoleCompaniesRelation")
}
Мне нужно изменить запрос:
const user = await ctx.db.query.user({ where: { email } },
`
{
id
firstName
lastName
email
userRoleCompanies(where: { isInvitationApproved: true, companie: { deletedLogically: false } }, first: 1) {
id
companieRole
}
}
`
)
кому:
const user = await prisma.user
.findOne({
where: { email }
})
.UserRoleCompanie_UserRoleCompanieRelation({
where: {
isInvitationApproved: true,
Companie: { deletedLogically: false }
},
first: 1
})
конечно, потому что новая схема (prisma2):
model UserRoleCompanie {
id String @id
Companie Companie[] @relation("UserRoleCompaniesRelation", references: [id])
}
Отношение UserRoleCompanie-Companie составляет 1-1 в prisma1 и 1-many в prisma2.
Если я заменю schema.prisma
от
Companie Companie[] @relation("UserRoleCompaniesRelation", references: [id])
к
companie Companie @relation(fields: [companiId], references: [id])
У меня ошибка Error validating: The argument fields must refer only to existing fields. The following fields do not exist in this model: companiId
. Что имеет смысл, потому что я не обновлял базу данных.
Как мы можем двигаться дальше, не выполняя SQL, чтобы не сломать prisma1?