typicaljoe / taffydb

TaffyDB - an open source JavaScript Database for your browser
http://taffydb.com
MIT License
2.21k stars 286 forks source link

Create undo #172

Open AndrewPixel opened 3 years ago

AndrewPixel commented 3 years ago

How would I go about creating a, say, 10 level undo?

I have a rather large database that tracks the state of a large number of powerpoint-type slides. The data for each slide is stored over 30+ records eg

let slides = TAFFY([ {"id":1, "slide": 1, "type":"ssqcb","name":"question","disabled": 0,"value":""}, {"id":2, "slide": 1, "type":"ssqcb","name":"option0","disabled": 0,"value":"choice 1"}, {"id":3, "slide": 1, "type":"ssqcb","name":"option1","disabled": 0,"value":"choice 2"}, ...
]);

With 50 slides there could easily be 1500+ records.

Users can add, delete, and edit slides. So a large number of records can be added or deleted in one go.

db.settings has onDBChange (and onInsert, onUpdate, and onRemove) but I don't know how to proceed. It looks like I'd need to store the entire db before any change is made.