This is my database schema `model User {` `id ...
# orm-help
a
This is my database schema
model User {
id           Int          @id @default(autoincrement())
auth0Id      String?      @unique
authEmail    String?      @unique
email        String       @unique
name         String?
companyData  CompanyData?
}
model CompanyData {
id      Int  @id @default(autoincrement())
owner   User @relation(fields: [ownerId], references: [id])
ownerId Int  @unique
capTable           CapTable?
}
model CapTable {
id Int @id @default(autoincrement())
stakeholder     Stakeholder[]
stockClass      StockClass[]
vestingTerm     VestingTerm[]
transactions    Transactions[]
companyData     CompanyData @relation(fields: [companyId], references: [id])
companyId Int   @unique
}
model ConvertibleTransactions {
id Int @default(autoincrement()) @unique
json  Json?
transactions Transactions?
}
model SecurityTransactions {
id Int @default(autoincrement()) @unique
json  Json?
transactions Transactions?
}
model WarrantsTransactions {
id Int @default(autoincrement()) @unique
json  Json?
transactions Transactions?
}
model Transactions {
id Int @default(autoincrement()) @unique
convertibleTransactions     ConvertibleTransactions? @relation(fields: [convertibleTransactionId], references: [id])
convertibleTransactionId Int  @unique
securityTransactions     SecurityTransactions? @relation(fields: [securityTransactionId], references: [id])
securityTransactionId Int  @unique
warrantsTransactions     WarrantsTransactions? @relation(fields: [warrantsTransactionId], references: [id])
warrantsTransactionId Int  @unique
capTable          CapTable?         @relation(fields: [capTableId], references: [id], onDelete: Cascade)
capTableId        Int?
}
and this is my prisma query
await prisma.user.update({
where: {
id: userData.id,
},
data: {
companyData: {
update: {
capTable: {
update: {
transactions: {
update: {
convertibleTransactions: {
upsert: {
create: {
json: data,
},
update: {
json: data,
},
where: {
id: data?.id || -1,
},
},
},
// where: {
//   convertibleTransactionId: data.convertibleId || -1,
// },
},
},
},
},
},
},
}, ,
});
can someone help me with what I am doing wrong here
1
n
Hey Aman 👋 What error are you getting? Here’s a working query for your reference based on your model:
Copy code
import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient({
  log: ['query'],
});

async function main() {
  await prisma.user.create({
    data: {
      id: 1,
      email: '<mailto:test@test.com|test@test.com>',
      companyData: {
        create: {
          capTable: {
            create: {
              transactions: {
                create: {
                  convertibleTransactions: {
                    create: {
                      id: 1,
                      json: {},
                    },
                  },
                  securityTransactions: {
                    create: {
                      id: 1,
                      json: {},
                    },
                  },
                  warrantsTransactions: {
                    create: {
                      id: 1,
                      json: {},
                    },
                  },
                },
              },
            },
          },
        },
      },
    },
  });

  await prisma.user.update({
    where: {
      id: 1,
    },
    data: {
      companyData: {
        update: {
          capTable: {
            update: {
              transactions: {
                update: {
                  data: {
                    convertibleTransactions: {
                      upsert: {
                        create: {
                          json: {},
                        },
                        update: {
                          json: {},
                        },
                      },
                    },
                  },
                  where: {
                    convertibleTransactionId: 1,
                  },
                },
              },
            },
          },
        },
      },
    },
  });
}

main()
  .catch((e) => {
    throw e;
  })
  .finally(async () => {
    await prisma.$disconnect();
  });
Response:
Copy code
➜ npm run dev

> hello-prisma@1.0.0 dev
> ts-node index.ts

prisma:query BEGIN
prisma:query INSERT INTO `railway`.`User` (`id`,`email`) VALUES (?,?)
prisma:query INSERT INTO `railway`.`CompanyData` (`id`,`ownerId`) VALUES (?,?)
prisma:query INSERT INTO `railway`.`CapTable` (`id`,`companyId`) VALUES (?,?)
prisma:query INSERT INTO `railway`.`WarrantsTransactions` (`id`,`json`) VALUES (?,?)
prisma:query INSERT INTO `railway`.`SecurityTransactions` (`id`,`json`) VALUES (?,?)
prisma:query INSERT INTO `railway`.`ConvertibleTransactions` (`id`,`json`) VALUES (?,?)
prisma:query INSERT INTO `railway`.`Transactions` (`id`,`convertibleTransactionId`,`securityTransactionId`,`warrantsTransactionId`,`capTableId`) VALUES (?,?,?,?,?)
prisma:query SELECT `railway`.`User`.`id`, `railway`.`User`.`auth0Id`, `railway`.`User`.`authEmail`, `railway`.`User`.`email`, `railway`.`User`.`name` FROM `railway`.`User` WHERE `railway`.`User`.`id` = ? LIMIT ? OFFSET ?
prisma:query COMMIT
prisma:query BEGIN
prisma:query SELECT `railway`.`User`.`id` FROM `railway`.`User` WHERE `railway`.`User`.`id` = ?
prisma:query SELECT `railway`.`CompanyData`.`id`, `railway`.`CompanyData`.`ownerId` FROM `railway`.`CompanyData` WHERE (1=1 AND `railway`.`CompanyData`.`ownerId` IN (?))
prisma:query SELECT `railway`.`CapTable`.`id`, `railway`.`CapTable`.`companyId` FROM `railway`.`CapTable` WHERE (1=1 AND `railway`.`CapTable`.`companyId` IN (?))
prisma:query SELECT `railway`.`Transactions`.`id`, `railway`.`Transactions`.`capTableId` FROM `railway`.`Transactions` WHERE (`railway`.`Transactions`.`convertibleTransactionId` = ? AND `railway`.`Transactions`.`capTableId` IN (?))
prisma:query SELECT `railway`.`Transactions`.`id`, `railway`.`Transactions`.`convertibleTransactionId` FROM `railway`.`Transactions` WHERE `railway`.`Transactions`.`id` = ?
prisma:query SELECT `railway`.`ConvertibleTransactions`.`id` FROM `railway`.`ConvertibleTransactions` WHERE (1=1 AND `railway`.`ConvertibleTransactions`.`id` IN (?))
prisma:query SELECT `railway`.`ConvertibleTransactions`.`id` FROM `railway`.`ConvertibleTransactions` WHERE `railway`.`ConvertibleTransactions`.`id` = ?
prisma:query UPDATE `railway`.`ConvertibleTransactions` SET `json` = ? WHERE `railway`.`ConvertibleTransactions`.`id` IN (?)
prisma:query SELECT `railway`.`User`.`id`, `railway`.`User`.`auth0Id`, `railway`.`User`.`authEmail`, `railway`.`User`.`email`, `railway`.`User`.`name` FROM `railway`.`User` WHERE `railway`.`User`.`id` = ? LIMIT ? OFFSET ?
prisma:query COMMIT