@sprucelabs/data-stores 19.3.3 → 20.0.1

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.
@@ -1,2 +1,2 @@
1
1
  import databaseAssertUtil from './databaseAssertUtil';
2
- export default function pluckAssertionMethods(util: typeof databaseAssertUtil): ("collectionName" | "runSuite" | "_getFilteredIndexes" | "_filterIdIndex" | "_assertUpdateUpdatedRightNumberOfRecords" | "assertCanSortDesc" | "assertCanSortAsc" | "assertInsertingGeneratesId" | "assertThrowsWhenUpdatingRecordNotFound" | "shutdown" | "assertCanCreateUniqueIndex" | "assertHasNoUniqueIndexToStart" | "assertCanShutdown" | "assertCanDeleteOne" | "assertCanDeleteRecord" | "assertCanLimitResultsToZero" | "assertCanLimitResults" | "assertFindOneOnEmptyDatabaseReturnsNull" | "assertEmptyDatabaseReturnsEmptyArray" | "assertCanPushOntoArrayValue" | "assertCanCreateMany" | "assertCanUpdateMany" | "assertCanQueryWithOr" | "assertCanUpdate" | "assertCanSortById" | "assertCanCreateMultiFieldUniqueIndex" | "assertSettingUniqueIndexViolationThrowsSpruceError" | "assertDuplicateKeyThrowsOnInsert" | "assertSyncingIndexesDoesNotAddAndRemove" | "assertSyncingUniqueIndexesRemovesExtraIndexes" | "assertSyncingUniqueIndexsSkipsExistingIndexs" | "assertSyncingUniqueIndexsAddsMissingIndexes" | "assertCantDropCompoundUniqueIndexThatDoesntExist" | "assertCantDropIndexWhenNoIndexExists" | "assertCantDropUniqueIndexThatDoesntExist" | "assertCanDropCompoundUniqueIndex" | "assertCanDropUniqueIndex" | "assertCantCreateUniqueIndexTwice" | "assertSyncingUniqueIndexesIsRaceProof" | "assertUniqueIndexBlocksDuplicates" | "assertCanCreateUniqueIndexOnNestedField" | "assertCanPushToArrayOnUpsert" | "assertCanSearchByRegex" | "assertCanReturnOnlySelectFields" | "assertThrowsWithoutDatabaseName" | "assertThrowsWhenCantConnect" | "assertThrowsWithInvalidConnectionString" | "assertKnowsIfConnectionClosed" | "assertCanQueryPathWithDotSyntax" | "assertCanQueryByGtLtGteLte" | "assertCanFindWithNe" | "assertCanFindWithIn" | "assertCanCountOnId" | "assertCanCount" | "assertCanUpsertNull" | "assertCanSaveAndGetNullAndUndefined" | "assertSyncIndexesDoesNotRemoveExisting" | "assertSyncIndexesRemovesExtraIndexes" | "assertSyncIndexesSkipsExisting" | "assertCantDropCompoundIndexThatDoesNotExist" | "assertCanDropCompoundIndex" | "assertCanDropIndex" | "assertCanCreateMultiFieldIndex" | "assertCantCreateSameIndexTwice" | "assertCanCreateIndex" | "assertHasNoIndexToStart" | "assertNestedFieldIndexUpdates" | "assertUpsertWithUniqueIndex" | "assertSyncIndexesHandlesRaceConditions" | "assertDuplicateFieldsWithMultipleUniqueIndexesWorkAsExpected")[];
2
+ export default function pluckAssertionMethods(util: typeof databaseAssertUtil): ("collectionName" | "assertThrowsWithInvalidConnectionString" | "assertThrowsWhenCantConnect" | "assertThrowsWithBadDatabaseName" | "assertEmptyDatabaseReturnsEmptyArray" | "assertKnowsIfConnectionClosed" | "assertFindOneOnEmptyDatabaseReturnsNull" | "assertCanSortDesc" | "assertCanSortAsc" | "assertCanSortById" | "assertCanQueryWithOr" | "generateIdDifferentEachTime" | "assertInsertingGeneratesId" | "assertCanCreateMany" | "assertCanLimitResults" | "assertCanCreateWithObjectField" | "assertCanCountOnId" | "assertCanCount" | "assertThrowsWhenUpdatingRecordNotFound" | "assertCanUpdate" | "assertCanUpdateMany" | "assertCanPushOntoArrayValue" | "canUpdateWithObjectField" | "canUpdateFieldInObjectFieldWithTargettedWhere" | "assertCanSaveAndGetNullAndUndefined" | "assertCanUpsertOne" | "assertCanUpsertNull" | "assertCanPushToArrayOnUpsert" | "assertCanLimitResultsToZero" | "assertCanFindWithBooleanField" | "assertCanQueryByGtLtGteLte" | "assertCanQueryPathWithDotSyntax" | "assertCanReturnOnlySelectFields" | "assertCanSearchByRegex" | "assertCanFindWithNe" | "assertCanFindWithIn" | "assertCanDeleteRecord" | "assertCanDeleteOne" | "assertHasNoUniqueIndexToStart" | "assertCanCreateUniqueIndex" | "assertCanCreateMultiFieldUniqueIndex" | "assertCantCreateUniqueIndexTwice" | "assertCanDropUniqueIndex" | "assertCanDropCompoundUniqueIndex" | "assertCantDropUniqueIndexThatDoesntExist" | "assertCantDropIndexWhenNoIndexExists" | "assertCantDropCompoundUniqueIndexThatDoesntExist" | "assertSyncingUniqueIndexsAddsMissingIndexes" | "assertSyncingUniqueIndexsSkipsExistingIndexs" | "assertSyncingUniqueIndexesRemovesExtraIndexes" | "assertSyncingUniqueIndexesIsRaceProof" | "assertSyncingIndexesDoesNotAddAndRemove" | "assertUniqueIndexBlocksDuplicates" | "assertDuplicateKeyThrowsOnInsert" | "assertSettingUniqueIndexViolationThrowsSpruceError" | "assertCanCreateUniqueIndexOnNestedField" | "assertUpsertWithUniqueIndex" | "assertNestedFieldIndexUpdates" | "assertHasNoIndexToStart" | "assertCanCreateIndex" | "assertCantCreateSameIndexTwice" | "assertCanCreateMultiFieldIndex" | "assertCanDropIndex" | "assertCanDropCompoundIndex" | "assertCantDropCompoundIndexThatDoesNotExist" | "assertSyncIndexesSkipsExisting" | "assertSyncIndexesRemovesExtraIndexes" | "assertSyncIndexesHandlesRaceConditions" | "assertSyncIndexesDoesNotRemoveExisting" | "assertDuplicateFieldsWithMultipleUniqueIndexesWorkAsExpected" | "runSuite" | "_getFilteredIndexes" | "_filterIdIndex" | "_assertUpdateUpdatedRightNumberOfRecords" | "shutdown" | "_assertThrowsExpectedNotFoundOnUpdateOne" | "_assert$orReturnsExpectedTotalRecords" | "_assertCanCreateMultiFieldIndex")[];
@@ -32,3 +32,9 @@ export interface DatabaseOptions {
32
32
  dbName?: string;
33
33
  log?: Log;
34
34
  }
35
+ export type TestConnect = (connectionString?: string, dbName?: string) => Promise<{
36
+ db: Database;
37
+ scheme: string;
38
+ connectionStringWithRandomBadDatabaseName: string;
39
+ badDatabaseName: string;
40
+ }>;
@@ -6,13 +6,14 @@ export type QueryBuilder<Query> = {
6
6
  } & {
7
7
  id?: string | QuerySelector<string>;
8
8
  };
9
+ export interface QuerySortField {
10
+ field: string;
11
+ direction: 'asc' | 'desc';
12
+ }
9
13
  export interface QueryOptions {
10
14
  skip?: number;
11
15
  limit?: number;
12
- sort?: {
13
- field: string;
14
- direction: 'asc' | 'desc';
15
- }[];
16
+ sort?: QuerySortField[];
16
17
  includeFields?: string[];
17
18
  }
18
19
  export type FlattenAndPathKeys<O extends Obj, T extends Obj = PathKeys<O>> = Flatten<T>;
package/build/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export * from './types/database.types';
14
14
  export * from './types/query.types';
15
15
  export * from './types/stores.types';
16
16
  export * from './constants';
17
+ export { default as DataStoresError } from './errors/SpruceError';
17
18
  export { default as generateId } from './utilities/generateIdDeprecated';
18
19
  export { default as CursorPager } from './cursors/CursorPager';
19
20
  export * from './cursors/CursorPager';
package/build/index.js CHANGED
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.databaseAssertUtil = exports.CursorPagerFaker = exports.CursorPager = exports.generateId = exports.mongoUtil = exports.NeDbDatabase = exports.MongoDatabase = exports.StoreLoader = exports.DatabaseFactory = exports.StoreFactory = exports.AbstractStore = exports.DatabaseFixture = exports.AbstractDatabaseTest = void 0;
20
+ exports.databaseAssertUtil = exports.CursorPagerFaker = exports.CursorPager = exports.generateId = exports.DataStoresError = exports.mongoUtil = exports.NeDbDatabase = exports.MongoDatabase = exports.StoreLoader = exports.DatabaseFactory = exports.StoreFactory = exports.AbstractStore = exports.DatabaseFixture = exports.AbstractDatabaseTest = void 0;
21
21
  var AbstractDatabaseTest_1 = require("./tests/AbstractDatabaseTest");
22
22
  Object.defineProperty(exports, "AbstractDatabaseTest", { enumerable: true, get: function () { return __importDefault(AbstractDatabaseTest_1).default; } });
23
23
  var DatabaseFixture_1 = require("./fixtures/DatabaseFixture");
@@ -43,6 +43,8 @@ __exportStar(require("./types/database.types"), exports);
43
43
  __exportStar(require("./types/query.types"), exports);
44
44
  __exportStar(require("./types/stores.types"), exports);
45
45
  __exportStar(require("./constants"), exports);
46
+ var SpruceError_1 = require("./errors/SpruceError");
47
+ Object.defineProperty(exports, "DataStoresError", { enumerable: true, get: function () { return __importDefault(SpruceError_1).default; } });
46
48
  var generateIdDeprecated_1 = require("./utilities/generateIdDeprecated");
47
49
  Object.defineProperty(exports, "generateId", { enumerable: true, get: function () { return __importDefault(generateIdDeprecated_1).default; } });
48
50
  var CursorPager_1 = require("./cursors/CursorPager");
@@ -1,75 +1,82 @@
1
- import { Connect } from '../__tests__/behavioral/database/Database.test';
2
- import { Database, Index, UniqueIndex } from '../types/database.types';
1
+ import { Database, Index, TestConnect, UniqueIndex } from '../types/database.types';
3
2
  declare const databaseAssertUtil: {
4
3
  collectionName: string;
5
- runSuite(connect: Connect): Promise<void>;
4
+ runSuite(connect: TestConnect, tests?: string[]): Promise<void>;
6
5
  _getFilteredIndexes(db: Database): Promise<UniqueIndex[] | Index[]>;
7
6
  _filterIdIndex(allIndexes: UniqueIndex[] | Index[]): UniqueIndex[] | Index[];
8
7
  _assertUpdateUpdatedRightNumberOfRecords(db: Database, search: Record<string, any>, updates: Record<string, any>, expectedUpdateCount: number): Promise<void>;
9
- assertCanSortDesc(connect: Connect): Promise<void>;
10
- assertCanSortAsc(connect: Connect): Promise<void>;
11
- assertInsertingGeneratesId(connect: Connect): Promise<void>;
12
- assertThrowsWhenUpdatingRecordNotFound(connect: Connect): Promise<void>;
8
+ generateIdDifferentEachTime(connect: TestConnect): Promise<void>;
9
+ assertCanSortDesc(connect: TestConnect): Promise<void>;
10
+ assertCanSortAsc(connect: TestConnect): Promise<void>;
11
+ assertInsertingGeneratesId(connect: TestConnect): Promise<void>;
12
+ assertThrowsWhenUpdatingRecordNotFound(connect: TestConnect): Promise<void>;
13
13
  shutdown(db: Database): Promise<void>;
14
- assertCanCreateUniqueIndex(connect: Connect): Promise<void>;
15
- assertHasNoUniqueIndexToStart(connect: Connect): Promise<void>;
16
- assertCanShutdown(connect: Connect): Promise<void>;
17
- assertCanDeleteOne(connect: Connect): Promise<void>;
18
- assertCanDeleteRecord(connect: Connect): Promise<void>;
19
- assertCanLimitResultsToZero(connect: Connect): Promise<void>;
20
- assertCanLimitResults(connect: Connect): Promise<void>;
21
- assertFindOneOnEmptyDatabaseReturnsNull(connect: Connect): Promise<void>;
22
- assertEmptyDatabaseReturnsEmptyArray(connect: Connect): Promise<void>;
23
- assertCanPushOntoArrayValue(connect: Connect): Promise<void>;
24
- assertCanCreateMany(connect: Connect): Promise<void>;
25
- assertCanUpdateMany(connect: Connect): Promise<void>;
26
- assertCanQueryWithOr(connect: Connect): Promise<void>;
27
- assertCanUpdate(connect: Connect): Promise<void>;
28
- assertCanSortById(connect: Connect): Promise<void>;
29
- assertCanCreateMultiFieldUniqueIndex(connect: Connect): Promise<void>;
30
- assertSettingUniqueIndexViolationThrowsSpruceError(connect: Connect): Promise<void>;
31
- assertDuplicateKeyThrowsOnInsert(connect: Connect): Promise<void>;
32
- assertSyncingIndexesDoesNotAddAndRemove(connect: Connect): Promise<void>;
33
- assertSyncingUniqueIndexesRemovesExtraIndexes(connect: Connect): Promise<void>;
34
- assertSyncingUniqueIndexsSkipsExistingIndexs(connect: Connect): Promise<void>;
35
- assertSyncingUniqueIndexsAddsMissingIndexes(connect: Connect): Promise<void>;
36
- assertCantDropCompoundUniqueIndexThatDoesntExist(connect: Connect): Promise<void>;
37
- assertCantDropIndexWhenNoIndexExists(connect: Connect): Promise<void>;
38
- assertCantDropUniqueIndexThatDoesntExist(connect: Connect): Promise<void>;
39
- assertCanDropCompoundUniqueIndex(connect: Connect): Promise<void>;
40
- assertCanDropUniqueIndex(connect: Connect): Promise<void>;
41
- assertCantCreateUniqueIndexTwice(connect: Connect): Promise<void>;
42
- assertSyncingUniqueIndexesIsRaceProof(connect: Connect): Promise<void>;
43
- assertUniqueIndexBlocksDuplicates(connect: Connect): Promise<void>;
44
- assertCanCreateUniqueIndexOnNestedField(connect: Connect): Promise<void>;
45
- assertCanPushToArrayOnUpsert(connect: Connect): Promise<void>;
46
- assertCanSearchByRegex(connect: Connect): Promise<void>;
47
- assertCanReturnOnlySelectFields(connect: Connect): Promise<void>;
48
- assertThrowsWithoutDatabaseName(connect: Connect): Promise<void>;
49
- assertThrowsWhenCantConnect(connect: Connect): Promise<void>;
50
- assertThrowsWithInvalidConnectionString(connect: Connect): Promise<void>;
51
- assertKnowsIfConnectionClosed(connect: Connect): Promise<void>;
52
- assertCanQueryPathWithDotSyntax(connect: Connect): Promise<void>;
53
- assertCanQueryByGtLtGteLte(connect: Connect): Promise<void>;
54
- assertCanFindWithNe(connect: Connect): Promise<void>;
55
- assertCanFindWithIn(connect: Connect): Promise<void>;
56
- assertCanCountOnId(connect: Connect): Promise<void>;
57
- assertCanCount(connect: Connect): Promise<void>;
58
- assertCanUpsertNull(connect: Connect): Promise<void>;
59
- assertCanSaveAndGetNullAndUndefined(connect: Connect): Promise<void>;
60
- assertSyncIndexesDoesNotRemoveExisting(connect: Connect): Promise<void>;
61
- assertSyncIndexesRemovesExtraIndexes(connect: Connect): Promise<void>;
62
- assertSyncIndexesSkipsExisting(connect: Connect): Promise<void>;
63
- assertCantDropCompoundIndexThatDoesNotExist(connect: Connect): Promise<void>;
64
- assertCanDropCompoundIndex(connect: Connect): Promise<void>;
65
- assertCanDropIndex(connect: Connect): Promise<void>;
66
- assertCanCreateMultiFieldIndex(connect: Connect, fields: any): Promise<void>;
67
- assertCantCreateSameIndexTwice(connect: Connect): Promise<void>;
68
- assertCanCreateIndex(connect: Connect): Promise<void>;
69
- assertHasNoIndexToStart(connect: Connect): Promise<void>;
70
- assertNestedFieldIndexUpdates(connect: Connect): Promise<void>;
71
- assertUpsertWithUniqueIndex(connect: Connect): Promise<void>;
72
- assertSyncIndexesHandlesRaceConditions(connect: Connect): Promise<void>;
73
- assertDuplicateFieldsWithMultipleUniqueIndexesWorkAsExpected(connect: Connect): Promise<void>;
14
+ assertCanCreateUniqueIndex(connect: TestConnect): Promise<void>;
15
+ assertHasNoUniqueIndexToStart(connect: TestConnect): Promise<void>;
16
+ assertCanUpsertOne(connect: TestConnect): Promise<void>;
17
+ assertCanDeleteOne(connect: TestConnect): Promise<void>;
18
+ assertCanDeleteRecord(connect: TestConnect): Promise<void>;
19
+ assertCanLimitResultsToZero(connect: TestConnect): Promise<void>;
20
+ assertCanLimitResults(connect: TestConnect): Promise<void>;
21
+ assertFindOneOnEmptyDatabaseReturnsNull(connect: TestConnect): Promise<void>;
22
+ assertEmptyDatabaseReturnsEmptyArray(connect: TestConnect): Promise<void>;
23
+ assertCanPushOntoArrayValue(connect: TestConnect): Promise<void>;
24
+ assertCanCreateWithObjectField(connect: TestConnect): Promise<void>;
25
+ canUpdateWithObjectField(connect: TestConnect): Promise<void>;
26
+ canUpdateFieldInObjectFieldWithTargettedWhere(connect: TestConnect): Promise<void>;
27
+ assertCanCreateMany(connect: TestConnect): Promise<void>;
28
+ assertCanUpdateMany(connect: TestConnect): Promise<void>;
29
+ assertCanQueryWithOr(connect: TestConnect): Promise<void>;
30
+ assertCanUpdate(connect: TestConnect): Promise<void>;
31
+ assertCanSortById(connect: TestConnect): Promise<void>;
32
+ assertCanCreateMultiFieldUniqueIndex(connect: TestConnect): Promise<void>;
33
+ assertSettingUniqueIndexViolationThrowsSpruceError(connect: TestConnect): Promise<void>;
34
+ assertDuplicateKeyThrowsOnInsert(connect: TestConnect): Promise<void>;
35
+ assertSyncingIndexesDoesNotAddAndRemove(connect: TestConnect): Promise<void>;
36
+ assertSyncingUniqueIndexesRemovesExtraIndexes(connect: TestConnect): Promise<void>;
37
+ assertSyncingUniqueIndexsSkipsExistingIndexs(connect: TestConnect): Promise<void>;
38
+ assertSyncingUniqueIndexsAddsMissingIndexes(connect: TestConnect): Promise<void>;
39
+ assertCantDropCompoundUniqueIndexThatDoesntExist(connect: TestConnect): Promise<void>;
40
+ assertCantDropIndexWhenNoIndexExists(connect: TestConnect): Promise<void>;
41
+ assertCantDropUniqueIndexThatDoesntExist(connect: TestConnect): Promise<void>;
42
+ assertCanDropCompoundUniqueIndex(connect: TestConnect): Promise<void>;
43
+ assertCanDropUniqueIndex(connect: TestConnect): Promise<void>;
44
+ assertCantCreateUniqueIndexTwice(connect: TestConnect): Promise<void>;
45
+ assertSyncingUniqueIndexesIsRaceProof(connect: TestConnect): Promise<void>;
46
+ assertUniqueIndexBlocksDuplicates(connect: TestConnect): Promise<void>;
47
+ assertCanCreateUniqueIndexOnNestedField(connect: TestConnect): Promise<void>;
48
+ assertCanPushToArrayOnUpsert(connect: TestConnect): Promise<void>;
49
+ assertCanSearchByRegex(connect: TestConnect): Promise<void>;
50
+ assertCanReturnOnlySelectFields(connect: TestConnect): Promise<void>;
51
+ assertThrowsWithBadDatabaseName(connect: TestConnect): Promise<void>;
52
+ assertThrowsWhenCantConnect(connect: TestConnect): Promise<void>;
53
+ assertThrowsWithInvalidConnectionString(connect: TestConnect): Promise<void>;
54
+ assertKnowsIfConnectionClosed(connect: TestConnect): Promise<void>;
55
+ assertCanQueryPathWithDotSyntax(connect: TestConnect): Promise<void>;
56
+ assertCanQueryByGtLtGteLte(connect: TestConnect): Promise<void>;
57
+ assertCanFindWithNe(connect: TestConnect): Promise<void>;
58
+ assertCanFindWithIn(connect: TestConnect): Promise<void>;
59
+ assertCanFindWithBooleanField(connect: TestConnect): Promise<void>;
60
+ assertCanCountOnId(connect: TestConnect): Promise<void>;
61
+ assertCanCount(connect: TestConnect): Promise<void>;
62
+ assertCanUpsertNull(connect: TestConnect): Promise<void>;
63
+ assertCanSaveAndGetNullAndUndefined(connect: TestConnect): Promise<void>;
64
+ assertSyncIndexesDoesNotRemoveExisting(connect: TestConnect): Promise<void>;
65
+ assertSyncIndexesRemovesExtraIndexes(connect: TestConnect): Promise<void>;
66
+ assertSyncIndexesSkipsExisting(connect: TestConnect): Promise<void>;
67
+ assertCantDropCompoundIndexThatDoesNotExist(connect: TestConnect): Promise<void>;
68
+ assertCanDropCompoundIndex(connect: TestConnect): Promise<void>;
69
+ assertCanDropIndex(connect: TestConnect): Promise<void>;
70
+ assertCanCreateMultiFieldIndex(connect: TestConnect): Promise<void>;
71
+ assertCantCreateSameIndexTwice(connect: TestConnect): Promise<void>;
72
+ assertCanCreateIndex(connect: TestConnect): Promise<void>;
73
+ assertHasNoIndexToStart(connect: TestConnect): Promise<void>;
74
+ assertNestedFieldIndexUpdates(connect: TestConnect): Promise<void>;
75
+ assertUpsertWithUniqueIndex(connect: TestConnect): Promise<void>;
76
+ assertSyncIndexesHandlesRaceConditions(connect: TestConnect): Promise<void>;
77
+ assertDuplicateFieldsWithMultipleUniqueIndexesWorkAsExpected(connect: TestConnect): Promise<void>;
78
+ _assertThrowsExpectedNotFoundOnUpdateOne(db: Database, query: Record<string, any>): Promise<void>;
79
+ _assert$orReturnsExpectedTotalRecords(db: Database, $or: Record<string, any>[], expected: number): Promise<void>;
80
+ _assertCanCreateMultiFieldIndex(connect: TestConnect, fields: string[]): Promise<void>;
74
81
  };
75
82
  export default databaseAssertUtil;