goTo
The goTo
method moves the state of the underlying Store
backwards or forwards to a specified checkpoint.
goTo(checkpointId: string): Checkpoints
Type | Description | |
---|---|---|
checkpointId | string | The |
returns | Checkpoints | A reference to the |
If there is no checkpoint with the Id
specified, this method has no effect.
Example
This example creates a Store
, a Checkpoints
object, makes two changes and then goes directly to the state of the Store
before the two changes. It then goes forward again one change, also using the goTo
method. Finally it tries to go to a checkpoint that does not exist.
import {createCheckpoints, createStore} from 'tinybase';
const store = createStore().setTables({pets: {fido: {sold: false}}});
const checkpoints = createCheckpoints(store);
console.log(checkpoints.getCheckpointIds());
// -> [[], '0', []]
store.setCell('pets', 'fido', 'color', 'brown');
checkpoints.addCheckpoint('identification');
store.setCell('pets', 'fido', 'sold', true);
checkpoints.addCheckpoint('sale');
console.log(checkpoints.getCheckpointIds());
// -> [['0', '1'], '2', []]
checkpoints.goTo('0');
console.log(store.getTables());
// -> {pets: {fido: {sold: false}}}
console.log(checkpoints.getCheckpointIds());
// -> [[], '0', ['1', '2']]
checkpoints.goTo('1');
console.log(store.getTables());
// -> {pets: {fido: {sold: false, color: 'brown'}}}
console.log(checkpoints.getCheckpointIds());
// -> [['0'], '1', ['2']]
checkpoints.goTo('3');
console.log(store.getTables());
// -> {pets: {fido: {sold: false, color: 'brown'}}}
console.log(checkpoints.getCheckpointIds());
// -> [['0'], '1', ['2']]
Since
v1.0.0