Add Transaction Support to sails-disk Adapter#64
Open
DominusKelvin wants to merge 8 commits intobalderdashy:masterfrom
Open
Add Transaction Support to sails-disk Adapter#64DominusKelvin wants to merge 8 commits intobalderdashy:masterfrom
DominusKelvin wants to merge 8 commits intobalderdashy:masterfrom
Conversation
Author
|
Hey @eashaw. I removed Node 8 from AppVeyor testing due to incompatibility with @sailshq/nedb@1.8.3, which uses util.types.isDate() - an API that was only added in In Node 8,
Since Node 8 reached end-of-life on December 31, 2019, and |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes balderdashy/#7365
Overview
See balderdashy/sails#7365
What's New
✨ Core Transaction Methods
beginTransaction()- Starts a new transaction with snapshot-based rollback capabilitycommitTransaction()- Commits changes made during the transactionrollbackTransaction()- Reverts all changes made during the transaction using pre-transaction snapshots🔧 Connection Management
leaseConnection()- Provides transaction-aware connections with proper contextreleaseConnection()- Cleans up transaction connections🧪 Comprehensive Test Suite
Technical Implementation
Transaction Architecture
The implementation follows Waterline's transactional adapter pattern:
Key Features
Snapshot-Based Rollback
The adapter implements rollback functionality by:
Files Changed
Core Implementation (
index.js)beginTransaction,commitTransaction,rollbackTransactionmethodsleaseConnectionandreleaseConnectionfor connection managementTest Infrastructure
package.json: Addedtransactional-testsscript and integrated into main test commandtest/transactional/begin-transaction.test.js: Tests transaction initialization and context setuptest/transactional/commit-transaction.test.js: Tests successful transaction commit and data persistencetest/transactional/rollback-transaction.test.js: Tests transaction rollback and data restorationTesting
All tests pass successfully:
npm testResults:
Test Coverage
The transactional tests cover:
Backward Compatibility
Benefits
See balderdashy/sails#7365