UNPKG

1.54 kBJavaScriptView Raw
1var Saveable = require('./base').Saveable,
2 Removeable = require('./base').Removeable,
3 ValidateAble = require('./validate');
4
5var 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; // for the Americans :-)
48
49 this.toJSON = function () {
50 return this.serialise();
51 };
52
53
54
55};
56
57ValidateAble.call(Document.prototype);
58Saveable.call(Document.prototype);
59Removeable.call(Document.prototype);
60
61module.exports = Document;
62