1 | var Saveable = require('./base').Saveable,
|
2 | Removeable = require('./base').Removeable,
|
3 | ValidateAble = require('./validate');
|
4 |
|
5 | var Document = function (beforeSaveFn, afterSaveFn, beforeRemoveFn, afterRemoveFn, validateFn, schema, model_type) {
|
6 | var self = this;
|
7 |
|
8 | self.beforeSaveFn = beforeSaveFn;
|
9 | self.afterSaveFn = afterSaveFn;
|
10 | self.beforeRemoveFn = beforeRemoveFn;
|
11 | self.afterRemoveFn = afterRemoveFn;
|
12 | self.validateFn = validateFn;
|
13 | self.schema = schema;
|
14 | self.model_type = model_type;
|
15 |
|
16 | this.serialise = function () {
|
17 | var self = this;
|
18 | var serialised_doc = {};
|
19 |
|
20 | serialised_doc.dateCreated = self.dateCreated;
|
21 | serialised_doc.lastUpdated = self.lastUpdated;
|
22 | serialised_doc.model_type = self.model_type;
|
23 | serialised_doc.id = self.id;
|
24 |
|
25 | Object.keys(self.schema).forEach(function (key) {
|
26 |
|
27 | if (self.schema[key].type.has_one) {
|
28 | return serialised_doc[key] = self[key].serialise();
|
29 | }
|
30 |
|
31 | if (self.schema[key].type.has_many) {
|
32 | var many_docs = [];
|
33 | self[key].forEach( function (item) {
|
34 | many_docs.push(item.serialise());
|
35 | });
|
36 |
|
37 | return serialised_doc[key] = many_docs;
|
38 | }
|
39 |
|
40 | serialised_doc[key] = self[key]
|
41 |
|
42 | });
|
43 |
|
44 | return serialised_doc;
|
45 | };
|
46 |
|
47 | this.serialize = this.serialise;
|
48 |
|
49 | this.toJSON = function () {
|
50 | return this.serialise();
|
51 | };
|
52 |
|
53 |
|
54 |
|
55 | };
|
56 |
|
57 | ValidateAble.call(Document.prototype);
|
58 | Saveable.call(Document.prototype);
|
59 | Removeable.call(Document.prototype);
|
60 |
|
61 | module.exports = Document;
|
62 |
|