functional-models-orm-memory 3.0.2 → 3.0.4

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,4 +1,4 @@
1
- import { DataDescription, DatastoreAdapter, ModelType } from 'functional-models';
1
+ import { DataDescription, DatastoreAdapter, ModelType, PrimaryKeyType, ToObjectResult } from 'functional-models';
2
2
  type WithRequired<T, K extends keyof T> = T & {
3
3
  [P in K]-?: T[P];
4
4
  };
@@ -6,5 +6,8 @@ type Props = {
6
6
  seedData?: Record<string, Record<string | number, any>>;
7
7
  getCollectionNameForModel?: <T extends DataDescription>(model: ModelType<T>) => string;
8
8
  };
9
- declare const create: ({ seedData, getCollectionNameForModel, }?: Props) => WithRequired<DatastoreAdapter, "count">;
9
+ type Database = Record<string, Record<PrimaryKeyType, ToObjectResult<any>>>;
10
+ declare const create: ({ seedData, getCollectionNameForModel, }?: Props) => WithRequired<DatastoreAdapter, "count" | "bulkInsert" | "bulkDelete"> & {
11
+ getRecords: () => Database;
12
+ };
10
13
  export { create };
@@ -26,39 +26,68 @@ const create = ({ seedData, getCollectionNameForModel = lib_1.defaultCollectionN
26
26
  }
27
27
  return database[name];
28
28
  };
29
- return {
30
- delete: (model, id) => {
29
+ const getRecords = () => {
30
+ return database;
31
+ };
32
+ const bulkInsert = (model, instances) => __awaiter(void 0, void 0, void 0, function* () {
33
+ return Promise.resolve().then(() => {
34
+ instances.reduce((accP, instance) => __awaiter(void 0, void 0, void 0, function* () {
35
+ const acc = yield accP;
36
+ yield save(instance);
37
+ return acc;
38
+ }), Promise.resolve());
39
+ });
40
+ });
41
+ const bulkDelete = (model, ids) => __awaiter(void 0, void 0, void 0, function* () {
42
+ return Promise.resolve().then(() => {
43
+ ids.reduce((accP, id) => __awaiter(void 0, void 0, void 0, function* () {
44
+ const acc = yield accP;
45
+ yield deleteObj(model, id);
46
+ return acc;
47
+ }), Promise.resolve());
48
+ });
49
+ });
50
+ const deleteObj = (model, id) => __awaiter(void 0, void 0, void 0, function* () {
51
+ const records = _getRecords(model);
52
+ // eslint-disable-next-line functional/immutable-data
53
+ delete records[id];
54
+ return Promise.resolve(undefined);
55
+ });
56
+ const retrieve = (model, primaryKey) => __awaiter(void 0, void 0, void 0, function* () {
57
+ return Promise.resolve().then(() => {
31
58
  const records = _getRecords(model);
32
- // eslint-disable-next-line functional/immutable-data
33
- delete records[id];
34
- return Promise.resolve(undefined);
35
- },
36
- retrieve: (model, primaryKey) => {
37
- return Promise.resolve().then(() => {
38
- const records = _getRecords(model);
39
- return records[primaryKey];
40
- });
41
- },
42
- save: (instance) => __awaiter(void 0, void 0, void 0, function* () {
43
- return Promise.resolve().then(() => __awaiter(void 0, void 0, void 0, function* () {
44
- const model = instance.getModel();
45
- const data = yield instance.toObj();
46
- const records = _getRecords(model);
47
- (0, merge_1.default)(records, { [yield instance.getPrimaryKey()]: data });
48
- return data;
49
- }));
50
- }),
51
- search: (model, query) => {
59
+ return records[primaryKey];
60
+ });
61
+ });
62
+ const save = (instance) => __awaiter(void 0, void 0, void 0, function* () {
63
+ return Promise.resolve().then(() => __awaiter(void 0, void 0, void 0, function* () {
64
+ const model = instance.getModel();
65
+ const data = yield instance.toObj();
66
+ const records = _getRecords(model);
67
+ (0, merge_1.default)(records, { [yield instance.getPrimaryKey()]: data });
68
+ return data;
69
+ }));
70
+ });
71
+ const search = (model, query) => {
72
+ const records = _getRecords(model);
73
+ const instances = (0, lib_1.filterResults)(query, Object.values(records));
74
+ return Promise.resolve({ instances: instances, page: undefined });
75
+ };
76
+ const count = (model) => {
77
+ return Promise.resolve().then(() => {
52
78
  const records = _getRecords(model);
53
- const instances = (0, lib_1.filterResults)(query, Object.values(records));
54
- return Promise.resolve({ instances: instances, page: undefined });
55
- },
56
- count: (model) => {
57
- return Promise.resolve().then(() => {
58
- const records = _getRecords(model);
59
- return Object.keys(records).length;
60
- });
61
- },
79
+ return Object.keys(records).length;
80
+ });
81
+ };
82
+ return {
83
+ save,
84
+ delete: deleteObj,
85
+ retrieve,
86
+ search,
87
+ count,
88
+ bulkInsert,
89
+ bulkDelete,
90
+ getRecords,
62
91
  };
63
92
  };
64
93
  exports.create = create;
@@ -1 +1 @@
1
- {"version":3,"file":"datastoreAdapter.js","sourceRoot":"","sources":["../src/datastoreAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAYA,yDAAgC;AAChC,yDAAgC;AAChC,+BAA4D;AAW5D,MAAM,MAAM,GAAG,CAAC,EACd,QAAQ,EACR,yBAAyB,GAAG,2BAAqB,MACxC,EAAE,EAA2C,EAAE;IACxD,MAAM,QAAQ,GAAiD,IAAA,eAAK,EAClE,QAAQ,CACT,IAAI,EAAE,CAAA;IAEP,MAAM,WAAW,GAAG,CAClB,KAAuB,EACvB,EAAE;QACF,MAAM,IAAI,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC;YACxB,qDAAqD;YACrD,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,CAAqD,CAAA;IAC3E,CAAC,CAAA;IAED,OAAO;QACL,MAAM,EAAE,CACN,KAAsB,EACtB,EAAkB,EACH,EAAE;YACjB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;YAClC,qDAAqD;YACrD,OAAO,OAAO,CAAC,EAAE,CAAC,CAAA;YAClB,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC;QACD,QAAQ,EAAE,CACR,KAAsB,EACtB,UAA0B,EACa,EAAE;YACzC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACjC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;gBAClC,OAAO,OAAO,CAAC,UAAU,CAEZ,CAAA;YACf,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,EAAE,CACJ,QAA8B,EACE,EAAE;YAClC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAS,EAAE;gBACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;gBACjC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAS,CAAA;gBAC1C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;gBAClC,IAAA,eAAK,EAAC,OAAO,EAAE,EAAE,CAAC,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC1D,OAAO,IAAI,CAAA;YACb,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC,CAAA;QACD,MAAM,EAAE,CACN,KAAsB,EACtB,KAAgB,EACuB,EAAE;YACzC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;YAClC,MAAM,SAAS,GAAG,IAAA,mBAAa,EAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;YAC9D,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QACnE,CAAC;QACD,KAAK,EAAE,CAAgC,KAAsB,EAAE,EAAE;YAC/D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACjC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;gBAClC,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAA;YACpC,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAEQ,wBAAM"}
1
+ {"version":3,"file":"datastoreAdapter.js","sourceRoot":"","sources":["../src/datastoreAdapter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "functional-models-orm-memory",
3
- "version": "3.0.2",
3
+ "version": "3.0.4",
4
4
  "description": "An in-memory datastore adapter for functional-models",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",