-
-
Notifications
You must be signed in to change notification settings - Fork 95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(runtime): proxy $extends
for each and every enhancement
#2016
base: dev
Are you sure you want to change the base?
Conversation
📝 WalkthroughWalkthroughThis pull request modifies the proxy creation in the runtime package by simplifying the Changes
Sequence Diagram(s)sequenceDiagram
participant Client
participant Prisma
participant ProxyCreator
Client->>Prisma: Call $extends method
Prisma-->>Client: Return extension result
Client->>ProxyCreator: Invoke makeProxy(extension result)
ProxyCreator-->>Client: Return wrapped proxy
sequenceDiagram
participant Test
participant DB
participant Enhancer
Test->>DB: Create Tenant instance
DB-->>Test: Return Tenant with auto-incrementing id
Test->>DB: Create User associated with Tenant
DB-->>Test: Return User with tenantId
Test->>Enhancer: Enhance User instance using ‘enhance’
Enhancer->>DB: Extend DB context via $extends (proxy wrapping applied)
DB-->>Enhancer: Return extended proxy context
Test->>DB: Create new User through extended context
DB-->>Test: Return User with expected id and tenantId
Suggested reviewers
✨ Finishing Touches
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
tests/regression/tests/issue-2014.test.ts (1)
1-40
: Well-structured regression testThis test effectively validates the fix for issue #2014 by demonstrating that enhancements are properly maintained after extending the database context. The test case covers the tenant-user relationship scenario where the issue was likely encountered.
The test creates a new database context with
$extends
, then verifies that creating a new user through the extended context correctly preserves the tenant context, showing that the enhancement chain is properly maintained.One minor suggestion - consider adding a more descriptive test case name that indicates what specific functionality is being tested, for example:
- it('regression', async () => { + it('should preserve enhancements after using $extends', async () => {
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
packages/runtime/src/enhancements/node/proxy.ts
(1 hunks)tests/regression/tests/issue-2014.test.ts
(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (6)
- GitHub Check: build-test (20.x)
- GitHub Check: dependency-review
- GitHub Check: OSSAR-Scan
- GitHub Check: Analyze (javascript-typescript)
- GitHub Check: build-test (20.x)
- GitHub Check: build-test (20.x)
🔇 Additional comments (1)
packages/runtime/src/enhancements/node/proxy.ts (1)
263-275
: Improved proxy handling for $extends methodThis change ensures that every result from the
$extends
method is wrapped in a proxy, removing the conditional check that was previously present. This is a more robust approach that maintains the enhancement chain in nested operations.The fix prevents potential issues where enhancements could be lost after applying
$extends
, which is exactly what issue #2014 was about.
fixes #2014