Richard Allred
2019-08-03 99e73490b45f1f76040216418afeec9ff9770e57
commit | author | age
e5e367 1
SU 2 var model = undefined;
3
4 exports.context = function(server, path, itemsModel) {
5     if (!server)
6         done('has to provide a restify server object');
7         
8     var context = "/items";
9     if (path)
10         context = path + context;
11         
12     server.get(context + '/', this.list);
13     server.get(context + '/:id', this.read);
14     server.get(context + '-count', this.count);
15     server.post(context + '/', this.save);
16     server.del(context + '/:id', this.destroy);
17     
18     model = itemsModel;
19 };
20
21 exports.list = function(req, res, next) {
22     var page_no = req.query.page || 1;
23     var sortField = req.query.sortFields || "id";
24     var sortDirection = req.query.sortDirections || "asc";
25
26     model.listAll(page_no, sortField, sortDirection, function(err, items) {
27         if (err) {
28             res.send(err);
29         }
30         else {
31             if (items) {
32                 model.countAll(function(err, n) {
33                     if (err) {
34                         res.send(err);
35                     }
36                     else {
37                         if (n) {
38                             var page = { 
39                                 "currentPage" : page_no,
40                                 "list" : items,
41                                 "pageSize" : 10,
42                                 "sortDirections" : sortDirection,
43                                 "sortFields" : sortField,
44                                 "totalResults" : n
45                             };
46                             res.json(page);
47                             next();
48                         }
49                     }
50                 });
51             }
52             else {
53                 res.send(err);
54             }
55         }
56     })
57 };
58
59 exports.read = function(req, res, next) {
60     var key = req.params.id;
61     model.read(key, function(err, item) {
62         if (err) {
63             res.send(err);
64         }
65         else {
66             if (item) {
67                 res.json(item);
68                 next();
69             }
70             else {
71                 res.send(err);
72             }
73         }
74     })
75 };
76
77
78 exports.count = function(req, res, next) {
79     model.countAll(function(err, n) {
80         if (err) {
81             res.send(err);
82         } 
83         else {
84             var page = { 
85               count: n
86             };
87             res.json(page)
88             next();
89         }
90     })
91 };
92
93
94 exports.save = function(req, res, next) {
95     if (req.params.id) {
96         model.update(req.params.id, req.params.description, req.params.done, function(err, item) {
97             if (err) {
98                 res.send(err);
99             }
100             else {
101                 res.json(item);
102                 next();
103             }
104         });
105     }
106     else {
107         model.create(req.params.description, req.params.done, function(err, item) {
108             if (err) {
109                 res.send(err);
110             }
111             else {
112                 res.json(item);
113                 next();
114             }
115         });
116     }
117 };
118
119
120 exports.destroy = function(req, res, next) {
121     if (req.params.id) {
122         model.destroy(req.params.id, function(err, item) {
123             if (err) {
124                 res.send(err);
125             }
126             else {
127                 res.json(item);
128             }
129         });
130     }
131 }