Nested Update

👨‍💼 the Prisma Client is pretty powerful and expressive with its nested queries. For example:
await prisma.ship.update({
	select: { id: true },
	where: { id: 1 },
	data: {
		name: 'The Black Pearl',
		captain: {
			update: {
				name: 'Jack Sparrow',
			},
		},
	},
})
This does not result in a single query. This is actually multiple queries in a single transaction! Here's an example of what the queries generated from that nested update may look like:
BEGIN
SELECT "public"."Ship"."id" FROM "public"."Ship" WHERE ("public"."Ship"."id" = $1 AND 1=1)
SELECT "public"."Ship"."id", "public"."Ship"."name", "public"."Ship"."captainId" FROM "public"."Ship" WHERE ("public"."Ship"."id" = $1 AND 1=1) OFFSET $2
UPDATE "public"."Ship" SET "name" = $1 WHERE ("public"."Ship"."id" = $2 AND 1=1)
COMMIT
Cool right? So, turns out our entire transaction can be represented as a nested query with Prisma rather than multiple calls. The images just need multiple subqueries to handle the delete, update, and create that can happen as a part of this note update. Give it a shot and think about which approach you prefer.

Access Denied

You must login or register for the workshop to view and run the tests.

Check out this video to see how the test tab works.