nongo-driver 2.12.5 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/atlas-api.js +7 -7
  2. package/dist/atlas-api.js.map +1 -1
  3. package/dist/cursor-iterator.d.ts +1 -2
  4. package/dist/cursor-iterator.js +3 -1
  5. package/dist/cursor-iterator.js.map +1 -1
  6. package/dist/generate-interfaces.js +24 -7
  7. package/dist/generate-interfaces.js.map +1 -1
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.js +33 -17
  10. package/dist/index.js.map +1 -1
  11. package/dist/interface/atlas/field.d.ts +1 -1
  12. package/dist/interface/atlas/field.js +1 -0
  13. package/dist/interface/atlas/field.js.map +1 -1
  14. package/dist/interface/atlas/index.js +15 -4
  15. package/dist/interface/atlas/index.js.map +1 -1
  16. package/dist/interface/index.d.ts +1 -10
  17. package/dist/interface/index.js +15 -4
  18. package/dist/interface/index.js.map +1 -1
  19. package/dist/model.d.ts +12 -13
  20. package/dist/model.js +26 -29
  21. package/dist/model.js.map +1 -1
  22. package/dist/mongo-index.d.ts +2 -3
  23. package/dist/mongo-index.js.map +1 -1
  24. package/dist/nongo.d.ts +1 -1
  25. package/dist/nongo.js +17 -21
  26. package/dist/nongo.js.map +1 -1
  27. package/dist/schema-parser.js +10 -10
  28. package/dist/schema-parser.js.map +1 -1
  29. package/dist/ts-interface-generator.js +18 -2
  30. package/dist/ts-interface-generator.js.map +1 -1
  31. package/dist/validator.js +1 -1
  32. package/dist/validator.js.map +1 -1
  33. package/package.json +15 -23
  34. package/src/atlas-api.ts +12 -41
  35. package/src/cursor-iterator.ts +1 -3
  36. package/src/index.ts +1 -1
  37. package/src/interface/index.ts +0 -11
  38. package/src/model.ts +25 -39
  39. package/src/mongo-index.ts +1 -3
  40. package/src/nongo.ts +1 -5
  41. package/test/database-helper.ts +26 -13
  42. package/test/models/dummy-model-changed-obj.ts +12 -0
  43. package/test/models/dummy-model-obj.ts +40 -0
  44. package/test/models/dummy-model-with-max-index-obj.ts +195 -0
  45. package/test/models/text-index-model-modified-obj.ts +12 -0
  46. package/test/models/text-index-model-obj.ts +11 -0
  47. package/test/models/text-index-model-too-long-obj.ts +11 -0
  48. package/test/nongo-multi.test.ts +2 -5
  49. package/test/nongo.test.ts +125 -172
@@ -1,7 +1,5 @@
1
1
  import clone from 'clone-deep';
2
- import fs from 'fs';
3
2
  import {ObjectId} from 'mongodb';
4
- import rimraf from 'rimraf';
5
3
  import Logger from 'wbb-logger';
6
4
  import {Nongo} from '../src';
7
5
  import DatabaseHelper from './database-helper';
@@ -21,7 +19,7 @@ process.on('unhandledRejection', (reason) => {
21
19
 
22
20
  async function find() {
23
21
  const client = await DatabaseHelper.getClient();
24
- const db = client.db(await DatabaseHelper.getDbName());
22
+ const db = client.db(DatabaseHelper.getDbName());
25
23
  return await db.collection('DummyModel').find({}).toArray();
26
24
  }
27
25
 
@@ -368,7 +366,7 @@ describe('Testing DB operations...', () => {
368
366
  // Del obj 1 (using toHexString to keep test that prepareQuery works)
369
367
  const res = await nongo.col(DummyModel).remove({_id: model1.obj._id.toHexString()});
370
368
  // Check a model was deleted
371
- expect(res).toEqual({n: 1, ok: 1});
369
+ expect(res).toEqual({acknowledged: true, deletedCount: 1});
372
370
 
373
371
  const docs = await nongo.col(DummyModel).find();
374
372
 
@@ -384,79 +382,71 @@ describe('Testing DB operations...', () => {
384
382
 
385
383
  it('Test indexes have been applied', async () => {
386
384
  const client = await DatabaseHelper.getClient();
387
- const db = client.db(await DatabaseHelper.getDbName());
388
- const {databaseName} = db;
389
- const ns = `${databaseName}.DummyModel`;
385
+ const db = client.db(DatabaseHelper.getDbName());
390
386
 
391
387
  let expected: any = [
392
388
  {
393
- v: 2,
394
- key: {
395
- _id: 1,
396
- },
397
- name: '_id_',
398
- ns,
389
+ "v":2,
390
+ "key":{
391
+ "_id":1
392
+ },
393
+ "name":"_id_"
399
394
  },
400
395
  {
401
- v: 2,
402
- background: true,
403
- key: {
404
- 'pets.likes.drink': 1,
405
- },
406
- name: 'pets.likes.drink_1',
407
- ns,
396
+ "v":2,
397
+ "key":{
398
+ "name":1
399
+ },
400
+ "name":"name_1",
401
+ "background":true,
402
+ "unique":true
408
403
  },
409
404
  {
410
- v: 2,
411
- background: true,
412
- key: {
413
- 'job.role': 1,
414
- },
415
- name: 'job.role_1',
416
- ns,
405
+ "v":2,
406
+ "key":{
407
+ "pets.likes.drink":1
408
+ },
409
+ "name":"pets.likes.drink_1",
410
+ "background":true
417
411
  },
418
412
  {
419
- background: true,
420
- key: {
421
- created: 1,
422
- dontStripChildren: 1,
423
- },
424
- name: 'dontStripChildren_1_created_1',
425
- ns,
426
- v: 2,
413
+ "v":2,
414
+ "key":{
415
+ "job.role":1
416
+ },
417
+ "name":"job.role_1",
418
+ "background":true
427
419
  },
428
420
  {
429
- background: true,
430
- default_language: 'english',
431
- key: {
432
- _fts: 'text',
433
- _ftsx: 1,
434
- },
435
- language_override: 'language',
436
- name: 'age_text',
437
- ns,
438
- textIndexVersion: 3,
439
- v: 2,
440
- weights: {
441
- age: 1,
442
- },
421
+ "v":2,
422
+ "key":{
423
+ "dontStripChildren":1,
424
+ "created":1
425
+ },
426
+ "name":"dontStripChildren_1_created_1",
427
+ "background":true
443
428
  },
444
429
  {
445
- v: 2,
446
- background: true,
447
- unique: true,
448
- key: {
449
- name: 1,
450
- },
451
- name: 'name_1',
452
- ns,
453
- },
454
- ];
430
+ "v":2,
431
+ "key":{
432
+ "_fts":"text",
433
+ "_ftsx":1
434
+ },
435
+ "name":"age_text",
436
+ "background":true,
437
+ "weights":{
438
+ "age":1
439
+ },
440
+ "default_language":"english",
441
+ "language_override":"language",
442
+ "textIndexVersion":3
443
+ }
444
+ ]
455
445
 
456
446
  let nongo = await DatabaseHelper.getNongoInstance([DummyModel]);
457
447
  await nongo.ensureIndexes();
458
448
  let indexes = await db.collection('DummyModel').indexes();
459
- expect(indexes).toEqual(expect.arrayContaining(expected));
449
+ expect(indexes).toEqual(expected);
460
450
  await nongo.mongoClient.close();
461
451
 
462
452
  expected = [
@@ -466,25 +456,22 @@ describe('Testing DB operations...', () => {
466
456
  _id: 1,
467
457
  },
468
458
  name: '_id_',
469
- ns,
470
459
  },
471
460
  {
472
461
  v: 2,
473
462
  background: true,
474
463
  key: {
475
- name: 1,
464
+ "pets.likes.drink": 1,
476
465
  },
477
- name: 'name_1',
478
- ns,
466
+ name: 'pets.likes.drink_1',
479
467
  },
480
468
  {
481
469
  v: 2,
482
470
  background: true,
483
471
  key: {
484
- 'pets.likes.drink': 1,
472
+ 'name': 1,
485
473
  },
486
- name: 'pets.likes.drink_1',
487
- ns,
474
+ name: 'name_1',
488
475
  },
489
476
  {
490
477
  background: true,
@@ -495,7 +482,6 @@ describe('Testing DB operations...', () => {
495
482
  },
496
483
  language_override: 'language',
497
484
  name: 'name_text_age_text',
498
- ns,
499
485
  textIndexVersion: 3,
500
486
  v: 2,
501
487
  weights: {
@@ -508,7 +494,7 @@ describe('Testing DB operations...', () => {
508
494
  nongo = await DatabaseHelper.getNongoInstance([DummyModelChanged]);
509
495
  await nongo.ensureIndexes();
510
496
  indexes = await db.collection('DummyModel').indexes();
511
- expect(indexes).toEqual(expect.arrayContaining(expected));
497
+ expect(indexes).toEqual(expected);
512
498
  await nongo.mongoClient.close();
513
499
 
514
500
  await client.close();
@@ -517,54 +503,50 @@ describe('Testing DB operations...', () => {
517
503
  it(
518
504
  'Test old indexes were removed', async () => {
519
505
  const client = await DatabaseHelper.getClient();
520
- const db = client.db(await DatabaseHelper.getDbName());
506
+ const db = client.db(DatabaseHelper.getDbName());
521
507
  const {databaseName} = db;
522
508
  const ns = `${databaseName}.DummyModel`;
523
509
  const expected: any = [
524
510
  {
525
- key: {
526
- _id: 1,
527
- },
528
- name: '_id_',
529
- ns,
530
- v: 2,
511
+ "key":{
512
+ "_id":1
513
+ },
514
+ "name":"_id_",
515
+ "v":2
531
516
  },
532
517
  {
533
- background: true,
534
- key: {
535
- name: 1,
536
- },
537
- name: 'name_1',
538
- ns,
539
- v: 2,
518
+ "background":true,
519
+ "key":{
520
+ "pets.likes.drink":1
521
+ },
522
+ "name":"pets.likes.drink_1",
523
+ "v":2
540
524
  },
541
525
  {
542
- background: true,
543
- key: {
544
- 'pets.likes.drink': 1,
545
- },
546
- name: 'pets.likes.drink_1',
547
- ns,
548
- v: 2,
526
+ "background":true,
527
+ "key":{
528
+ "name":1
529
+ },
530
+ "name":"name_1",
531
+ "v":2
549
532
  },
550
533
  {
551
- background: true,
552
- default_language: 'english',
553
- key: {
554
- _fts: 'text',
555
- _ftsx: 1,
556
- },
557
- language_override: 'language',
558
- name: 'name_text_age_text',
559
- ns,
560
- textIndexVersion: 3,
561
- v: 2,
562
- weights: {
563
- age: 1,
564
- name: 1,
565
- },
566
- },
567
- ];
534
+ "background":true,
535
+ "default_language":"english",
536
+ "key":{
537
+ "_fts":"text",
538
+ "_ftsx":1
539
+ },
540
+ "language_override":"language",
541
+ "name":"name_text_age_text",
542
+ "textIndexVersion":3,
543
+ "v":2,
544
+ "weights":{
545
+ "age":1,
546
+ "name":1
547
+ }
548
+ }
549
+ ]
568
550
 
569
551
  // create dummy model with maximum possible number of indexes
570
552
  let nongo = await DatabaseHelper.getNongoInstance([DummyModelWithMaxIndex]);
@@ -600,12 +582,11 @@ describe('Testing DB operations...', () => {
600
582
  count: {$sum: 1},
601
583
  },
602
584
  },
585
+ {
586
+ $sort: {_id: -1}
587
+ }
603
588
  ];
604
589
 
605
- const options = {
606
- sort: {name: -1},
607
- };
608
-
609
590
  const expected = [
610
591
  {
611
592
  _id: 'obj2',
@@ -618,11 +599,11 @@ describe('Testing DB operations...', () => {
618
599
  ];
619
600
 
620
601
  // Aggreate and check result is correct
621
- const results = await nongo.col(DummyModel).aggregate(pipeline, options);
602
+ const results = await nongo.col(DummyModel).aggregate(pipeline);
622
603
  expect(results).toHaveLength(2);
623
604
  expect(results).toEqual(expected);
624
605
 
625
- for await (const doc of await nongo.col(DummyModel).aggregateIterator(pipeline, options)) {
606
+ for await (const doc of await nongo.col(DummyModel).aggregateIterator(pipeline)) {
626
607
  expect(expected.shift()).toEqual(doc);
627
608
  }
628
609
 
@@ -636,8 +617,14 @@ describe('Testing DB operations...', () => {
636
617
 
637
618
  const newAge = 999999999;
638
619
  const result = await nongo.col(DummyModel)
639
- .update({}, {$set: {age: newAge}});
640
- expect(result).toEqual({n: 2, nModified: 2, ok: 1});
620
+ .update({}, { $set: { age: newAge } });
621
+ expect(result).toEqual({
622
+ "acknowledged": true,
623
+ "matchedCount": 2,
624
+ "modifiedCount": 2,
625
+ "upsertedCount": 0,
626
+ "upsertedId": null,
627
+ });
641
628
 
642
629
  const doc = await nongo.col(DummyModel).findOne();
643
630
  expect(doc.obj.age).toBe(newAge);
@@ -727,35 +714,6 @@ describe('Testing DB operations...', () => {
727
714
  // Finish the test
728
715
  await nongo.mongoClient.close();
729
716
  });
730
-
731
- it('Test creating collection dump', async () => {
732
- // Insert and confirm it worked
733
- const nongo: any = await DatabaseHelper.getNongoInstance(models);
734
- await nongo.new(DummyModel, obj1).save();
735
- expect(await nongo.col(DummyModel).findOne()).toBeDefined();
736
-
737
- const dir = './testing/temp-dump';
738
-
739
- // Make sure {@code dir} doesn't exist
740
- expect(fs.existsSync(dir)).toBeFalsy();
741
-
742
- await nongo.col(DummyModel).dumpCollection(dir, true);
743
-
744
- // Check the dir has been populated by the dump
745
- expect(fs.readdirSync(dir).length).toBeTruthy();
746
-
747
- // Clean up {@code dir}
748
- await new Promise(((resolve) => {
749
- rimraf(dir, () => {
750
- logger.info('Cleaned up ' + dir);
751
- resolve();
752
- });
753
- }));
754
-
755
- // Finish the test
756
- await nongo.mongoClient.close();
757
- });
758
-
759
717
  });
760
718
 
761
719
  it('test text index update', async () => {
@@ -769,41 +727,36 @@ it('test text index update', async () => {
769
727
  await nongo.ensureIndexes();
770
728
 
771
729
  const client = await DatabaseHelper.getClient();
772
- const db = client.db(await DatabaseHelper.getDbName());
773
- const {databaseName} = db;
774
- const ns = `${databaseName}.TextIndexModel`;
730
+ const db = client.db(DatabaseHelper.getDbName());
775
731
  const indexes = await db.collection('TextIndexModel').indexes();
776
732
 
777
733
  expect(indexes).toEqual([{
778
734
  v: 2,
779
735
  key: {_id: 1},
780
736
  name: '_id_',
781
- ns,
782
737
  },
738
+ {
739
+ v: 2,
740
+ unique: true,
741
+ key: {name: 1, module: 1},
742
+ name: 'name_1_module_1',
743
+ background: true,
744
+ },
745
+ {
746
+ v: 2,
747
+ key: {_fts: 'text', _ftsx: 1},
748
+ name: 'my_text_index',
749
+ background: true,
750
+ weights:
783
751
  {
784
- v: 2,
785
- unique: true,
786
- key: {name: 1, module: 1},
787
- name: 'name_1_module_1',
788
- ns,
789
- background: true,
752
+ 'description.cy': 1,
753
+ 'description.en': 1,
754
+ 'description.es': 1,
755
+ 'name': 1,
756
+ 'summary': 1,
790
757
  },
791
- {
792
- v: 2,
793
- key: {_fts: 'text', _ftsx: 1},
794
- name: 'my_text_index',
795
- ns,
796
- background: true,
797
- weights:
798
- {
799
- 'description.cy': 1,
800
- 'description.en': 1,
801
- 'description.es': 1,
802
- 'name': 1,
803
- 'summary': 1,
804
- },
805
- default_language: 'english',
806
- language_override: 'language',
807
- textIndexVersion: 3,
808
- }]);
758
+ default_language: 'english',
759
+ language_override: 'language',
760
+ textIndexVersion: 3,
761
+ }]);
809
762
  });