Skip to content

Commit 2b27224

Browse files
committed
fix(runtime): proxy $extends for each and every enhancement
1 parent 82b8d25 commit 2b27224

File tree

2 files changed

+40
-6
lines changed

2 files changed

+40
-6
lines changed

packages/runtime/src/enhancements/node/proxy.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -267,12 +267,7 @@ export function makeProxy<T extends PrismaProxyHandler>(
267267
if ($extends && typeof $extends === 'function') {
268268
return (...args: any[]) => {
269269
const result = $extends.bind(target)(...args);
270-
if (!result[PRISMA_PROXY_ENHANCER]) {
271-
return makeProxy(result, modelMeta, makeHandler, name + '$ext', errorTransformer);
272-
} else {
273-
// avoid double wrapping
274-
return result;
275-
}
270+
return makeProxy(result, modelMeta, makeHandler, name + '$ext', errorTransformer);
276271
};
277272
} else {
278273
return $extends;
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { loadSchema } from '@zenstackhq/testtools';
2+
3+
describe('issue 2014', () => {
4+
it('regression', async () => {
5+
const { prisma, enhance } = await loadSchema(
6+
`
7+
model Tenant {
8+
id Int @id @default(autoincrement())
9+
10+
users User[]
11+
}
12+
13+
model User {
14+
id Int @id @default(autoincrement())
15+
tenantId Int @default(auth().tenantId)
16+
tenant Tenant @relation(fields: [tenantId], references: [id])
17+
18+
@@allow('all', true)
19+
}
20+
`,
21+
{ logPrismaQuery: true }
22+
);
23+
24+
const tenant = await prisma.tenant.create({ data: {} });
25+
const user = await prisma.user.create({ data: { tenantId: tenant.id } });
26+
27+
const db = enhance(user);
28+
const extendedDb = db.$extends({});
29+
30+
await expect(
31+
extendedDb.user.create({
32+
data: {},
33+
})
34+
).resolves.toEqual({
35+
id: 2,
36+
tenantId: tenant.id,
37+
});
38+
});
39+
});

0 commit comments

Comments
 (0)