1 | const utils = require("./utils");
|
2 |
|
3 | const model = (...args) => {
|
4 | const Model = require("./Model");
|
5 | const model = new Model(...args);
|
6 | const returnObject = model.Document;
|
7 | Object.keys(model).forEach((key) => {
|
8 | returnObject[key] = model[key];
|
9 | });
|
10 |
|
11 | Object.keys(Object.getPrototypeOf(model)).forEach((key) => {
|
12 | if (model[key].carrier) {
|
13 | const carrier = model[key].carrier(model);
|
14 | returnObject[key] = (...args) => new carrier(...args);
|
15 | returnObject[key].carrier = carrier;
|
16 | } else if (typeof model[key] === "object") {
|
17 | const main = (key) => {
|
18 | utils.object.set(returnObject, key, {});
|
19 | Object.keys(utils.object.get(model, key)).forEach((subKey) => {
|
20 | const newKey = `${key}.${subKey}`;
|
21 | if (typeof utils.object.get(model, newKey) === "object") {
|
22 | main(newKey);
|
23 | } else {
|
24 | utils.object.set(returnObject, newKey, utils.object.get(model, newKey).bind(model));
|
25 | }
|
26 | });
|
27 | };
|
28 | main(key);
|
29 | } else {
|
30 | returnObject[key] = model[key].bind(model);
|
31 | }
|
32 | });
|
33 | return returnObject;
|
34 | };
|
35 | model.defaults = {
|
36 | ...require("./Model/defaults").custom
|
37 | };
|
38 |
|
39 | module.exports = {
|
40 | "model": model,
|
41 | "Schema": require("./Schema"),
|
42 | "Condition": require("./Condition"),
|
43 | "transaction": require("./Transaction"),
|
44 | "aws": require("./aws"),
|
45 | "logger": require("./logger"),
|
46 | "UNDEFINED": Symbol("dynamoose.UNDEFINED")
|
47 | };
|