1 | var util = require('util')
|
2 | , async = require('async')
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | var Helper = function(Model){
|
10 | this.Model = Model
|
11 | }
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | Helper.prototype.Model = null
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 | Helper.prototype.find = function(apx,req,res,next){
|
27 | this.Model.find(req.get(),function(err,results){
|
28 | if(err) next(err)
|
29 | else {
|
30 | results.forEach(function(v,i,o){
|
31 | o[i] = v.toJSON({virtuals: true})
|
32 | })
|
33 | res.success()
|
34 | res.set('results',results)
|
35 | next()
|
36 | }
|
37 | })
|
38 | }
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 | Helper.prototype.findOne = function(apx,req,res,next){
|
48 | this.Model.findOne(req.get(),function(err,result){
|
49 | if(err) next(err)
|
50 | else {
|
51 | res.success()
|
52 | res.set('result',result.toJSON({virtuals: true}))
|
53 | next()
|
54 | }
|
55 | })
|
56 | }
|
57 |
|
58 |
|
59 |
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 | Helper.prototype.list = function(apx,req,res,next){
|
66 | var data = req.get() || {}
|
67 | , search = {}
|
68 | search.start = data.start || 0
|
69 | search.limit = data.limit || 10
|
70 | search.find = data.search || null
|
71 | search.sort = data.sort || ''
|
72 | this.Model.list(search,function(err,count,results){
|
73 | if(err) next(err)
|
74 | else {
|
75 | results.forEach(function(v,i,o){
|
76 | o[i] = v.toJSON({virtuals: true})
|
77 | })
|
78 | res.success()
|
79 | res.set('count',count)
|
80 | res.set('results',results)
|
81 | next()
|
82 | }
|
83 | })
|
84 | }
|
85 |
|
86 |
|
87 |
|
88 |
|
89 |
|
90 |
|
91 |
|
92 |
|
93 | Helper.prototype.save = function(apx,req,res,done){
|
94 | var self = this
|
95 | var data = req.get()
|
96 | if(0 === Object.keys(data).length) done('No parameters passed for save')
|
97 | else {
|
98 | var response = []
|
99 | if(!util.isArray(data) && 'object' === typeof data)
|
100 | data = [data]
|
101 | async.each(
|
102 | data,
|
103 | function(v,next){
|
104 | self.Model.findById(v._id ? v._id : v.id,function(err,row){
|
105 | if(err)
|
106 | next(err)
|
107 | else {
|
108 | if(null === row){
|
109 | row = new self.Model(v)
|
110 | } else {
|
111 | row.merge(v)
|
112 | }
|
113 | row.save(function(err,result){
|
114 | if(err)
|
115 | next(err)
|
116 | else {
|
117 | response.push(result.toJSON({virtuals: true}))
|
118 | next()
|
119 | }
|
120 | })
|
121 | }
|
122 | })
|
123 | },
|
124 | function(err){
|
125 | if(err) res.error(err)
|
126 | else {
|
127 | res.success()
|
128 | res.set('results',response)
|
129 | }
|
130 | done()
|
131 | }
|
132 | )
|
133 | }
|
134 | }
|
135 |
|
136 |
|
137 |
|
138 |
|
139 |
|
140 |
|
141 |
|
142 |
|
143 | Helper.prototype.remove = function(apx,req,res,done){
|
144 | var self = this
|
145 | var data = req.get()
|
146 | if(0 === Object.keys(data).length) done('No parameters passed for remove')
|
147 | else {
|
148 | if('string' === typeof data || !util.isArray(data) && 'object' === typeof data)
|
149 | data = [data]
|
150 | async.each(
|
151 | data,
|
152 | function(v,next){
|
153 | self.Model.remove(v,function(err){
|
154 | next(err)
|
155 | })
|
156 | },
|
157 | function(err){
|
158 | if(err) done(err)
|
159 | else {
|
160 | res.success()
|
161 | done()
|
162 | }
|
163 | }
|
164 | )
|
165 | }
|
166 | }
|
167 |
|
168 | module.exports = exports = Helper |
\ | No newline at end of file |