functional-models 3.0.6 → 3.0.8

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.
package/README.md CHANGED
@@ -28,12 +28,12 @@ This framework was born out of the enjoyment and power of working with Django mo
28
28
 
29
29
  - Define models that have robust properties and are scoped to a namespace or app
30
30
  - Robust typing system for TypeScript goodness.
31
- - Same modeling code can be used on front end and backends.
32
- - Validate model data
33
- - ORM ready via the [functional-models-orm](https://github.com/monolithst/functional-models-orm) package. Available Datastores: DynamoDb, Mongo, in-memory, elastic/opensearch, Sqlite, Postgres, Mysql
34
- - Most common properties out of the box.
31
+ - The same modeling code can be used on front end and backends.
32
+ - Complete validation system for both properties and overall models.
33
+ - ORM built-in with optional libraries that provide the database backends. Available Datastores: DynamoDb, Mongo, in-memory, elastic/opensearch, Sqlite, Postgres, Mysql
34
+ - Most common properties provided out of the box.
35
35
  - Supports "foreign keys", 1 to 1 as well as 1 to many (via an Array).
36
- - Models support custom primary key name. (id is used by default)
36
+ - Models support custom primary keys. (The key "id" is used by default)
37
37
  - Supports different model namings, (plural, singular, display), and the ability to customize them.
38
38
  - Add Api Information that can be used for auto-generating frontend and backend code as well as documentation.
39
39
 
@@ -43,6 +43,7 @@ This framework was born out of the enjoyment and power of working with Django mo
43
43
  - [Simple JavasScript Example](#simple-javascript-example-usage)
44
44
  - [Simple TypeScript Example](#simple-typescript-example-usage)
45
45
  - [Validation](#validation)
46
+ - [ORM Backed Models](#orm-backed-models)
46
47
  - [Properties](#properties)
47
48
  - [List of Properties](#list-of-properties-out-of-the-box)
48
49
 
@@ -51,6 +52,7 @@ This framework was born out of the enjoyment and power of working with Django mo
51
52
  Version 3 is a major update that changes most of the primary interfaces from Version 2. This version should be simpler to extend (see the companion library [Functional Models Orm](https://github.com/monolithst/functional-models-orm)) making models much easier to reuse across front and back ends. Here is a non-exhaustive list.
52
53
 
53
54
  - Model/ModelInstance/ModelFactory types have been reworked, so that they are simpler and much easier to extend
55
+ - ORM code from `functional-models-orm` is now included. No additional libraries needed!
54
56
  - Some "automagical" stuff has been removed, because experience has shown them to be more of a hassle than they were worth.
55
57
  - Interfaces for ModelType/ModelInstance/ModelDefinitions have been reworked
56
58
  - API Endpoint information can be added to a ModelDefinition
@@ -365,6 +367,36 @@ const checkForDuplicateValues = (
365
367
  }
366
368
  ```
367
369
 
370
+ ## Orm Backed Models
371
+
372
+ You can add datastore functionality to models and their instances by simply swapping out the Model Factory that creates your model. <b>This is a key concept for supporting frontend as well as backend development with the same models.</b>
373
+
374
+ Every model gets the following functions:
375
+
376
+ ```
377
+ save() - Saves an instance passed in
378
+ delete() - Deletes an instance with the given primary key
379
+ retrieve() - Gets a saved instance by its primary key
380
+ search() - Searches for instances
381
+ searchOne() - Seaches for one instance
382
+ createAndSave() - Creates and then saves an instance
383
+ bulkInsert() - Bulk inserts many instances
384
+ count() - Counts the number of saved instances
385
+ ```
386
+
387
+ Every model instance gets the following functions:
388
+
389
+ ```
390
+ save() - Saves this instance
391
+ delete() - Deletes this instance
392
+ ```
393
+
394
+ For additional information on the ORM system see:
395
+
396
+ [How To Use the ORM](https://monolithst.github.io/functional-models/documents/How_to_Use_the_ORM.html)
397
+
398
+ [How To Use a Model in a Frontend and Backend](https://monolithst.github.io/functional-models/documents/How_to_Use_a_model_in_a_Frontend_and_Backend.html)
399
+
368
400
  ## Properties
369
401
 
370
402
  There are numerous properties that are supported out of the box that cover most data modeling needs. It is also very easy to create custom properties that encapsulate unique choices
@@ -576,3 +608,11 @@ console.info(id)
576
608
  In this situation, the latinName for species is not passed in, but calculated from the two other properties. This becomes the primary key for this object, which is unique.
577
609
 
578
610
  [Documentation](https://monolithst.github.io/functional-models/functions/index.properties.NaturalIdProperty.html)
611
+
612
+ ### ORM Properties
613
+
614
+ #### LastModifiedDateProperty
615
+
616
+ A date property that automatically updates whenever the model instance is saved.
617
+
618
+ [Documentation](https://monolithst.github.io/functional-models/functions/index.orm.properties.LastModifiedDateProperty.html)
package/index.d.ts CHANGED
@@ -8,3 +8,5 @@ export * from './validation';
8
8
  export * as validation from './validation';
9
9
  export * from './errors';
10
10
  export * as errors from './errors';
11
+ export * as orm from './orm';
12
+ export * from './orm';
package/index.js CHANGED
@@ -36,7 +36,7 @@ var __importStar = (this && this.__importStar) || (function () {
36
36
  };
37
37
  })();
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.errors = exports.validation = exports.properties = exports.models = exports.types = void 0;
39
+ exports.orm = exports.errors = exports.validation = exports.properties = exports.models = exports.types = void 0;
40
40
  __exportStar(require("./types"), exports);
41
41
  exports.types = __importStar(require("./types"));
42
42
  __exportStar(require("./models"), exports);
@@ -47,4 +47,6 @@ __exportStar(require("./validation"), exports);
47
47
  exports.validation = __importStar(require("./validation"));
48
48
  __exportStar(require("./errors"), exports);
49
49
  exports.errors = __importStar(require("./errors"));
50
+ exports.orm = __importStar(require("./orm"));
51
+ __exportStar(require("./orm"), exports);
50
52
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,iDAAgC;AAChC,2CAAwB;AACxB,mDAAkC;AAClC,+CAA4B;AAC5B,2DAA0C;AAC1C,+CAA4B;AAC5B,2DAA0C;AAC1C,2CAAwB;AACxB,mDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,iDAAgC;AAChC,2CAAwB;AACxB,mDAAkC;AAClC,+CAA4B;AAC5B,2DAA0C;AAC1C,+CAA4B;AAC5B,2DAA0C;AAC1C,2CAAwB;AACxB,mDAAkC;AAClC,6CAA4B;AAC5B,wCAAqB"}
package/lib.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { OpenAPIV3 } from 'openapi-types';
2
- import { ApiInfo, ApiInfoPartialRest, Arrayable, DataDescription, DataValue, ModelInstance, PrimaryKeyType, PropertyConfig, PropertyValidatorComponent, PropertyValidatorComponentTypeAdvanced } from './types';
2
+ import { ApiInfo, ApiInfoPartialRest, Arrayable, DataDescription, DataValue, ModelInstance, ModelInstanceFetcher, PrimaryKeyType, PropertyConfig, PropertyValidatorComponent, PropertyValidatorComponentTypeAdvanced } from './types';
3
3
  import HttpMethods = OpenAPIV3.HttpMethods;
4
4
  declare const NULL_ENDPOINT = "NULL";
5
5
  declare const NULL_METHOD = HttpMethods.HEAD;
@@ -14,4 +14,8 @@ declare const isModelInstance: (obj: any) => obj is ModelInstance<any, any>;
14
14
  declare const getModelName: (namespace: string, pluralName: string) => string;
15
15
  declare const buildValidEndpoint: (...components: readonly string[]) => string;
16
16
  declare const populateApiInformation: (pluralName: string, namespace: string, partial: Partial<ApiInfoPartialRest> | undefined) => Readonly<Required<ApiInfo>>;
17
- export { isReferencedProperty, getValueForModelInstance, getValueForReferencedModel, getCommonTextValidators, getValidatorFromConfigElseEmpty, getCommonNumberValidators, mergeValidators, isModelInstance, getModelName, buildValidEndpoint, populateApiInformation, NULL_ENDPOINT, NULL_METHOD, };
17
+ /**
18
+ * A ModelInstanceFetcher that does not do anything. It always returns undefined.
19
+ */
20
+ declare const noFetch: ModelInstanceFetcher;
21
+ export { isReferencedProperty, getValueForModelInstance, getValueForReferencedModel, getCommonTextValidators, getValidatorFromConfigElseEmpty, getCommonNumberValidators, mergeValidators, isModelInstance, getModelName, buildValidEndpoint, populateApiInformation, NULL_ENDPOINT, NULL_METHOD, noFetch, };
package/lib.js CHANGED
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.NULL_METHOD = exports.NULL_ENDPOINT = exports.populateApiInformation = exports.buildValidEndpoint = exports.getModelName = exports.isModelInstance = exports.mergeValidators = exports.getCommonNumberValidators = exports.getValidatorFromConfigElseEmpty = exports.getCommonTextValidators = exports.getValueForReferencedModel = exports.getValueForModelInstance = exports.isReferencedProperty = void 0;
15
+ exports.noFetch = exports.NULL_METHOD = exports.NULL_ENDPOINT = exports.populateApiInformation = exports.buildValidEndpoint = exports.getModelName = exports.isModelInstance = exports.mergeValidators = exports.getCommonNumberValidators = exports.getValidatorFromConfigElseEmpty = exports.getCommonTextValidators = exports.getValueForReferencedModel = exports.getValueForModelInstance = exports.isReferencedProperty = void 0;
16
16
  const openapi_types_1 = require("openapi-types");
17
17
  const kebabCase_1 = __importDefault(require("lodash/kebabCase"));
18
18
  const merge_1 = __importDefault(require("lodash/merge"));
@@ -189,4 +189,11 @@ const populateApiInformation = (pluralName, namespace, partial) => {
189
189
  return _fillOutRestInfo(pluralName, namespace, partial, nullRest);
190
190
  };
191
191
  exports.populateApiInformation = populateApiInformation;
192
+ /**
193
+ * A ModelInstanceFetcher that does not do anything. It always returns undefined.
194
+ */
195
+ const noFetch = () => {
196
+ return Promise.resolve(undefined);
197
+ };
198
+ exports.noFetch = noFetch;
192
199
  //# sourceMappingURL=lib.js.map
package/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
package/orm/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export * as query from './query';
2
+ export * as validation from './validation';
3
+ export * as properties from './properties';
4
+ export * as types from './types';
5
+ export * from './models';
6
+ export * from './validation';
7
+ export * from './properties';
8
+ export * from './types';
9
+ export * from './query';
package/orm/index.js ADDED
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.types = exports.properties = exports.validation = exports.query = void 0;
40
+ exports.query = __importStar(require("./query"));
41
+ exports.validation = __importStar(require("./validation"));
42
+ exports.properties = __importStar(require("./properties"));
43
+ exports.types = __importStar(require("./types"));
44
+ __exportStar(require("./models"), exports);
45
+ __exportStar(require("./validation"), exports);
46
+ __exportStar(require("./properties"), exports);
47
+ __exportStar(require("./types"), exports);
48
+ __exportStar(require("./query"), exports);
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orm/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAgC;AAChC,2DAA0C;AAC1C,2DAA0C;AAC1C,iDAAgC;AAEhC,2CAAwB;AACxB,+CAA4B;AAC5B,+CAA4B;AAC5B,0CAAuB;AACvB,0CAAuB"}
@@ -0,0 +1,12 @@
1
+ import { ModelFactory } from '../types';
2
+ import { DatastoreAdapter, Orm } from './types';
3
+ /**
4
+ * Creates a structure that has an OrmModel and a fetcher
5
+ * @param datastoreAdapter - A backing datastore.
6
+ * @param Model - An optional underlying Model factory for using. Defaults to {@link Model}
7
+ */
8
+ declare const createOrm: ({ datastoreAdapter, Model, }: Readonly<{
9
+ datastoreAdapter: DatastoreAdapter;
10
+ Model?: ModelFactory;
11
+ }>) => Orm;
12
+ export { createOrm };
package/orm/models.js ADDED
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.createOrm = void 0;
16
+ const merge_1 = __importDefault(require("lodash/merge"));
17
+ const models_1 = require("../models");
18
+ const errors_1 = require("../errors");
19
+ const validation_1 = require("./validation");
20
+ const query_1 = require("./query");
21
+ /**
22
+ * Creates a structure that has an OrmModel and a fetcher
23
+ * @param datastoreAdapter - A backing datastore.
24
+ * @param Model - An optional underlying Model factory for using. Defaults to {@link Model}
25
+ */
26
+ const createOrm = ({ datastoreAdapter, Model = models_1.Model, }) => {
27
+ if (!datastoreAdapter) {
28
+ throw new Error(`Must include a datastoreAdapter`);
29
+ }
30
+ const _retrievedObjToModel = (model) => (obj) => {
31
+ return model.create(obj);
32
+ };
33
+ // @ts-ignore
34
+ const fetcher = (model, id) => __awaiter(void 0, void 0, void 0, function* () {
35
+ const x = retrieve(model, id);
36
+ return x;
37
+ });
38
+ const retrieve = (model, id) => __awaiter(void 0, void 0, void 0, function* () {
39
+ const obj = yield datastoreAdapter.retrieve(model, id);
40
+ if (!obj) {
41
+ return undefined;
42
+ }
43
+ return _retrievedObjToModel(model)(obj);
44
+ });
45
+ const _defaultOptions = () => ({
46
+ instanceCreatedCallback: undefined,
47
+ });
48
+ const _convertOptions = (options) => {
49
+ const r = (0, merge_1.default)({}, _defaultOptions(), options);
50
+ return r;
51
+ };
52
+ const ThisModel = (modelDefinition, options) => {
53
+ /*
54
+ NOTE: We need access to the model AFTER its built, so we have to have this state variable.
55
+ It has been intentionally decided that recreating the model each and every time for each database retrieve is
56
+ too much cost to obtain "functional purity". This could always be reverted back.
57
+ */
58
+ // @ts-ignore
59
+ // eslint-disable-next-line functional/no-let
60
+ let model = null;
61
+ const theOptions = _convertOptions(options);
62
+ const search = (ormQuery) => {
63
+ return datastoreAdapter.search(model, ormQuery).then(result => {
64
+ // @ts-ignore
65
+ const conversionFunc = _retrievedObjToModel(model);
66
+ return {
67
+ // @ts-ignore
68
+ instances: result.instances.map(conversionFunc),
69
+ page: result.page,
70
+ };
71
+ });
72
+ };
73
+ const searchOne = (ormQuery) => {
74
+ ormQuery = (0, merge_1.default)(ormQuery, { take: 1 });
75
+ return search(ormQuery).then(({ instances }) => {
76
+ return instances[0];
77
+ });
78
+ };
79
+ const bulkInsert = (instances) => __awaiter(void 0, void 0, void 0, function* () {
80
+ if (datastoreAdapter.bulkInsert) {
81
+ // @ts-ignore
82
+ yield datastoreAdapter.bulkInsert(model, instances);
83
+ return undefined;
84
+ }
85
+ yield Promise.all(instances.map(x => x.save()));
86
+ return undefined;
87
+ });
88
+ const loadedRetrieve = (id) => {
89
+ // @ts-ignore
90
+ return retrieve(model, id);
91
+ };
92
+ const modelValidators = (modelDefinition === null || modelDefinition === void 0 ? void 0 : modelDefinition.uniqueTogether)
93
+ ? (modelDefinition.modelValidators || []).concat(
94
+ // @ts-ignore
95
+ (0, validation_1.uniqueTogether)(modelDefinition.uniqueTogether))
96
+ : modelDefinition.modelValidators;
97
+ const ormModelDefinition = (0, merge_1.default)({}, modelDefinition, {
98
+ modelValidators,
99
+ });
100
+ const _updateLastModifiedIfExistsReturnNewObj = (instance) => __awaiter(void 0, void 0, void 0, function* () {
101
+ const hasLastModified = Object.entries(instance.getModel().getModelDefinition().properties).filter(propertyEntry => {
102
+ const property = propertyEntry[1];
103
+ return Boolean('lastModifiedUpdateMethod' in property);
104
+ })[0];
105
+ const doLastModified = () => __awaiter(void 0, void 0, void 0, function* () {
106
+ const obj = yield instance.toObj();
107
+ const newInstance = model.create(
108
+ // @ts-ignore
109
+ (0, merge_1.default)(obj, {
110
+ [hasLastModified[0]]:
111
+ // @ts-ignore
112
+ hasLastModified[1].lastModifiedUpdateMethod(),
113
+ }));
114
+ return newInstance;
115
+ });
116
+ // @ts-ignore
117
+ return hasLastModified ? doLastModified() : instance;
118
+ });
119
+ const save = (instance) => __awaiter(void 0, void 0, void 0, function* () {
120
+ return Promise.resolve().then(() => __awaiter(void 0, void 0, void 0, function* () {
121
+ const newInstance = yield _updateLastModifiedIfExistsReturnNewObj(instance);
122
+ const invalid = yield newInstance.validate();
123
+ if (invalid) {
124
+ throw new errors_1.ValidationError(model.getName(), invalid);
125
+ }
126
+ const savedObj = yield datastoreAdapter.save(newInstance);
127
+ // @ts-ignore
128
+ return _retrievedObjToModel(model)(savedObj);
129
+ }));
130
+ });
131
+ const createAndSave = (data) => __awaiter(void 0, void 0, void 0, function* () {
132
+ if (datastoreAdapter.createAndSave) {
133
+ const response = yield datastoreAdapter.createAndSave(data);
134
+ // @ts-ignore
135
+ return _retrievedObjToModel(model)(response);
136
+ }
137
+ // @ts-ignore
138
+ const instance = model.create(yield data.toObj());
139
+ return instance.save();
140
+ });
141
+ const deleteObj = (id) => {
142
+ return Promise.resolve().then(() => __awaiter(void 0, void 0, void 0, function* () {
143
+ yield datastoreAdapter.delete(model, id);
144
+ }));
145
+ };
146
+ const _getSave = (instance) => {
147
+ // See if save has been overrided.
148
+ if (theOptions.save !== undefined) {
149
+ // @ts-ignore
150
+ return () => theOptions.save(save, instance);
151
+ }
152
+ // @ts-ignore
153
+ return () => save(instance);
154
+ };
155
+ const _getDelete = (instance) => {
156
+ if (theOptions.delete) {
157
+ // @ts-ignore
158
+ return () => theOptions.delete(deleteObj, instance);
159
+ }
160
+ return () => deleteObj(instance.getPrimaryKey());
161
+ };
162
+ const instanceCreatedCallback = (instance) => {
163
+ // @ts-ignore
164
+ // eslint-disable-next-line functional/immutable-data
165
+ instance.save = _getSave(instance);
166
+ // @ts-ignore
167
+ // eslint-disable-next-line functional/immutable-data
168
+ instance.delete = _getDelete(instance);
169
+ if (theOptions.instanceCreatedCallback) {
170
+ const callbacks = Array.isArray(theOptions.instanceCreatedCallback)
171
+ ? theOptions.instanceCreatedCallback
172
+ : [theOptions.instanceCreatedCallback];
173
+ callbacks.forEach(x => x(instance));
174
+ }
175
+ };
176
+ // Absolutely do not put theOptions as the first argument. This first argument is what is modified,
177
+ // therefore the instanceCreatedCallback keeps calling itself instead of wrapping.
178
+ const overridedOptions = (0, merge_1.default)({}, theOptions, {
179
+ instanceCreatedCallback: [instanceCreatedCallback],
180
+ });
181
+ const baseModel = Model(ormModelDefinition, overridedOptions);
182
+ const lowerLevelCreate = baseModel.create;
183
+ const _convertModelInstance = (instance) => {
184
+ return (0, merge_1.default)(instance, {
185
+ create,
186
+ getModel: () => model,
187
+ save: _getSave(instance),
188
+ delete: _getDelete(instance),
189
+ });
190
+ };
191
+ const create = (data) => {
192
+ const result = lowerLevelCreate(data);
193
+ return _convertModelInstance(result);
194
+ };
195
+ const _countRecursive = (...args_1) => __awaiter(void 0, [...args_1], void 0, function* (page = null) {
196
+ const results = yield model.search((0, query_1.queryBuilder)().pagination(page).compile());
197
+ const length1 = results.instances.length;
198
+ // Don't run it again if the page is the same as a previous run.
199
+ if (results.page && results.page !== page) {
200
+ const length2 = yield _countRecursive(results.page);
201
+ return length1 + length2;
202
+ }
203
+ return length1;
204
+ });
205
+ const count = () => __awaiter(void 0, void 0, void 0, function* () {
206
+ // NOTE: This is EXTREMELY inefficient. This should be
207
+ // overrided by a dataProvider if at all possible.
208
+ if (datastoreAdapter.count) {
209
+ return datastoreAdapter.count(model);
210
+ }
211
+ return _countRecursive();
212
+ });
213
+ model = (0, merge_1.default)(baseModel, {
214
+ create,
215
+ save,
216
+ delete: deleteObj,
217
+ retrieve: loadedRetrieve,
218
+ search,
219
+ searchOne,
220
+ createAndSave,
221
+ bulkInsert,
222
+ count,
223
+ });
224
+ return model;
225
+ };
226
+ return {
227
+ Model: ThisModel,
228
+ fetcher,
229
+ };
230
+ };
231
+ exports.createOrm = createOrm;
232
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/orm/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { DateValueType, PropertyConfig, Arrayable, DataValue } from '../types';
2
+ import { OrmPropertyConfig } from './types';
3
+ /**
4
+ * A property that automatically updates whenever the model instance is saved.
5
+ * @param config
6
+ */
7
+ declare const LastModifiedDateProperty: (config?: PropertyConfig<DateValueType>) => Readonly<{
8
+ getConfig: () => object;
9
+ getChoices: () => readonly import("../types").ChoiceTypes[];
10
+ getDefaultValue: () => DateValueType | undefined;
11
+ getConstantValue: () => DateValueType | undefined;
12
+ getPropertyType: () => import("../types").PropertyType | string;
13
+ createGetter: (value: DateValueType, modelData: Readonly<{
14
+ [s: string]: any;
15
+ }>, modelInstance: import("../types").ModelInstance<Readonly<{
16
+ [s: string]: any;
17
+ }>, object, object>) => import("../types").ValueGetter<DateValueType, Readonly<{
18
+ [s: string]: any;
19
+ }>, object, object>;
20
+ getValidator: (valueGetter: import("../types").ValueGetter<DateValueType, Readonly<{
21
+ [s: string]: any;
22
+ }>, object, object>) => import("../types").PropertyValidator<Readonly<{
23
+ [s: string]: any;
24
+ }>>;
25
+ }>;
26
+ /**
27
+ * Creates an orm based property config.
28
+ * @param config - Additional configurations.
29
+ */
30
+ declare const ormPropertyConfig: <T extends Arrayable<DataValue>>(config?: OrmPropertyConfig<T>) => PropertyConfig<T>;
31
+ export { ormPropertyConfig, LastModifiedDateProperty };
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LastModifiedDateProperty = exports.ormPropertyConfig = void 0;
7
+ const merge_1 = __importDefault(require("lodash/merge"));
8
+ const identity_1 = __importDefault(require("lodash/identity"));
9
+ const properties_1 = require("../properties");
10
+ const validation_1 = require("./validation");
11
+ const _defaultPropertyConfig = {
12
+ unique: undefined,
13
+ };
14
+ /**
15
+ * A property that automatically updates whenever the model instance is saved.
16
+ * @param config
17
+ */
18
+ const LastModifiedDateProperty = (config = {}) => {
19
+ const additionalMetadata = { lastModifiedUpdateMethod: () => new Date() };
20
+ return (0, properties_1.DatetimeProperty)(config, additionalMetadata);
21
+ };
22
+ exports.LastModifiedDateProperty = LastModifiedDateProperty;
23
+ /**
24
+ * Creates an orm based property config.
25
+ * @param config - Additional configurations.
26
+ */
27
+ const ormPropertyConfig = (config = _defaultPropertyConfig) => {
28
+ return (0, merge_1.default)(config, {
29
+ validators: [
30
+ ...(config.validators ? config.validators : []),
31
+ config.unique ? (0, validation_1.unique)(config.unique) : null,
32
+ ].filter(identity_1.default),
33
+ });
34
+ };
35
+ exports.ormPropertyConfig = ormPropertyConfig;
36
+ //# sourceMappingURL=properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/orm/properties.ts"],"names":[],"mappings":";;;;;;AAAA,yDAAgC;AAChC,+DAAsC;AAEtC,8CAAgD;AAChD,6CAAqC;AAGrC,MAAM,sBAAsB,GAAG;IAC7B,MAAM,EAAE,SAAS;CAClB,CAAA;AAED;;;GAGG;AACH,MAAM,wBAAwB,GAAG,CAC/B,SAAwC,EAAE,EAC1C,EAAE;IACF,MAAM,kBAAkB,GAAG,EAAE,wBAAwB,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAA;IACzE,OAAO,IAAA,6BAAgB,EAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;AACrD,CAAC,CAAA;AAiB2B,4DAAwB;AAfpD;;;GAGG;AACH,MAAM,iBAAiB,GAAG,CACxB,SAA+B,sBAAsB,EAClC,EAAE;IACrB,OAAO,IAAA,eAAK,EAAC,MAAM,EAAE;QACnB,UAAU,EAAE;YACV,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,mBAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;SAC7C,CAAC,MAAM,CAAC,kBAAQ,CAAC;KACnB,CAAC,CAAA;AACJ,CAAC,CAAA;AAEQ,8CAAiB"}