joao.santos
11/10/2021, 6:57 AMmodel Users {
id Int @id @default(autoincrement())
email String @unique
name String @db.VarChar(255)
conversations Conversations[]
messages Messages[]
}
model Conversations {
id Int @id @default(autoincrement())
name String @db.VarChar(255)
messages Messages[]
users Users[]
}
model Messages {
id Int @id @default(autoincrement())
message String @db.Text
userId Int
user Users @relation(_fields_: [userId], _references_: [id])
conversationId Int
conversation Conversations @relation(_fields_: [conversationId], _references_: [id])
}
SEED:
wait prisma.users.create({
data: {
email: '<mailto:user1@user.com|user1@user.com>',
name: 'User 1',
conversations: {
create: {
name: 'Conversation 1',
messages: {
create: {
message: 'Message 1',
userId: 1,
},
},
},
},
},
})
await prisma.users.create({
data: {
email: '<mailto:user2@user.com|user2@user.com>',
name: 'User 1',
conversations: {
connectOrCreate: {
where: { id: 1 },
create: {
name: 'Conversation 1',
messages: {
create: {
message: 'Message 2',
userId: 2,
},
},
},
},
},
},
})Maciek K
11/10/2021, 7:14 AMconnectOrCreate it connects to the Conversation with id=1 and doesn't fire the whole remaining createjoao.santos
11/10/2021, 7:31 AMMaciek K
11/10/2021, 8:04 AMawait prisma.users.create({
data: {
email: '<mailto:user2@user.com|user2@user.com>',
name: 'User 2',
messages: {
create: {
message: 'Message 2',
userId: 2,
conversation {
connect {
id: 1
},
},
},
},
},
})joao.santos
11/10/2021, 8:07 AMjoao.santos
11/10/2021, 8:12 AMawait prisma.users.create({
data: {
email: '<mailto:user2@user.com|user2@user.com>',
name: 'User 2',
conversations: {
connect: {
id: 1,
},
},
messages: {
create: {
message: 'Message 2',
conversationId: 1,
},
},
},
})