Comments (2)
The down side is that you loose track on who did the change and without the RevisionChangeModel you cannot see what was updated. This is also bad :(
What if we introduce a new coloum 'snapshot' where the previousVersion is stored. The 'currentVersion' will still be stored in document.
We could furthermore improve paper-trail by loading the full object from db automatically for the snapshot instead of relying that previousVersion actually contains a fully loaded object.
At least in our codebase we have a lot of places where we load an object and only specify 1-2 attributes instead of fully loading all attributes.
from sequelize-paper-trail.
Yeah there are arguments to do it either way. The downside of storing {} as initial state is that it doesn't add much value because when a model is created we would immediately need to add 2 rows in the Revisions table, one with {} and one with the model as it is when it is created.
Currently, the Revisions table already contains the full model at each step in the document column, so when I create a user, say {first_name: 'John', last_name: 'Doe'} it will contain the full model will be stored there as revision 1, and when I update the first name of the user, a row is added to the revisions table and then the document column contains the new model, say {first_name: 'Jane', last_name: 'Doe'} and the RevisionChanges will have a row where path = 'first_name', document will contain the previous and current values, so both 'John' and Jane' and will be associated with Revision id = 2, this enables us to actually search for every snapshot in which the first_name was either 'John' and it was updated to something else (lhs: 'John') or when it was something else and updated to 'John' (rhs: 'John')
from sequelize-paper-trail.
Related Issues (20)
- Allow the noPaperTrail option to be set via continuation-local-storage
- Exclude attributes per entity HOT 1
- Is this project still ongoing? HOT 5
- feature request: bulkCreate hook
- feature request: beforeBulkUpdate and afterBulkUpdate hooks
- relation "revisions" does not exist HOT 1
- How to capture add and remove associations? HOT 1
- sequelize-typescript support HOT 1
- Support for JSONB HOT 8
- Revisions and RevisionHistory tables are not created HOT 7
- Revisions table breaks with Sequelize 5. HOT 1
- update not creating records in revision table HOT 2
- Syntax error on MySQL for the JSONB data type HOT 4
- User Tracking does not populate associated column HOT 1
- JSON field does not work anymore in MySQL 5.7+ HOT 4
- "Revision.documentId cannot be null", HOT 2
- Usage with TypeORM HOT 2
- `model` and `document` is `null` on revision record HOT 1
- Doesn't track with MySQL
- Documentation for enabling User Tracking HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sequelize-paper-trail.