Skip to content

Commit c2056e8

Browse files
committed
add revisions example
1 parent 50c921e commit c2056e8

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -666,6 +666,41 @@ queryStream.on("error", err => {
666666

667667
```
668668

669+
### Revisions
670+
NOTE: Please make sure revisions are enabled before trying one of the below.
671+
672+
```javascript
673+
const session = store.openSession();
674+
const user = {
675+
name: "Marcin",
676+
age: 30,
677+
pet: "users/4"
678+
};
679+
680+
await session.store(user, "users/1");
681+
await session.saveChanges();
682+
683+
// modify doc to create a new revision
684+
user.name = "Roman";
685+
user.age = 40;
686+
await session.saveChanges();
687+
688+
// get revisions
689+
const revisions = await session.advanced.revisions.getFor("users/1");
690+
// [ { name: 'Roman',
691+
// age: 40,
692+
// pet: 'users/4',
693+
// '@metadata': [Object],
694+
// id: 'users/1' },
695+
// { name: 'Marcin',
696+
// age: 30,
697+
// pet: 'users/4',
698+
// '@metadata': [Object],
699+
// id: 'users/1' } ]
700+
```
701+
702+
703+
669704
## Using object literals for entities
670705

671706
In order to comfortably use object literals as entities set function getting collection name based on the content of the object - `store.conventions.

test/Documents/ReadmeSamples.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,10 @@ describe("Readme query samples", function () {
360360
// ...
361361
});
362362

363+
userStream.on("end", () => {
364+
assert.ok(result.length);
365+
});
366+
363367
await new Promise((resolve, reject) => {
364368
stream.finished(userStream, err => {
365369
err ? reject(err) : resolve();
@@ -369,12 +373,14 @@ describe("Readme query samples", function () {
369373

370374
it("can stream query and get stats", async () => {
371375
let stats: StreamQueryStatistics;
376+
const items = [];
372377
query = session.query({ collection: "users" })
373378
.whereGreaterThan("age", 29);
374379
const queryStream = await session.advanced.stream(query, _ => stats = _);
375380

376381
queryStream.on("data", user => {
377382
print(user);
383+
items.push(user);
378384
// ...
379385
});
380386

@@ -386,6 +392,7 @@ describe("Readme query samples", function () {
386392
await new Promise((resolve, reject) => {
387393
queryStream.on("end", () => {
388394
try {
395+
assert.ok(items.length);
389396
assert.ok(stats);
390397
assert.strictEqual(stats.totalResults, 1);
391398
assert.strictEqual(stats.indexName, "Auto/users/Byage");
@@ -401,6 +408,33 @@ describe("Readme query samples", function () {
401408

402409
});
403410

411+
describe("with revisions set up", function() {
412+
413+
beforeEach(async () => testContext.setupRevisions(store, false, 5));
414+
415+
it("can get revisions", async () => {
416+
417+
const session = store.openSession();
418+
419+
const user = {
420+
name: "Marcin",
421+
age: 30,
422+
pet: "users/4"
423+
};
424+
425+
await session.store(user, "users/1");
426+
await session.saveChanges();
427+
428+
user.name = "Roman";
429+
user.age = 40;
430+
await session.saveChanges();
431+
432+
const revisions = await session.advanced.revisions.getFor("users/1");
433+
assert.strictEqual(revisions.length, 2);
434+
});
435+
436+
});
437+
404438
async function prepareUserDataSet(store: IDocumentStore) {
405439
const users = [
406440
new User({

0 commit comments

Comments
 (0)