UNPKG

1.34 kBJavaScriptView Raw
1const utils = require("./utils");
2
3const 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};
35model.defaults = {
36 ...require("./Model/defaults").custom
37};
38
39module.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};