66372944a4aadcf6c5fdb54a1d1c20b954f35d06
[motion.git] / server / api / update / update.controller.js
1 'use strict';
2
3 var _ = require('lodash');
4 var path = require("path");
5 var config = require('../../config/environment');
6
7 var Git = require('simple-git')(path.join(config.root));
8
9 var Update = require('../../models').Update;
10
11 // Get list of updates
12 exports.index = function(req, res) {
13   Git
14     .log(function(err, logs) {
15       if (err) {
16         return handleError(res, err);
17       }
18
19       var versions = [];
20       logs.all.forEach(function(log) {
21         log.version = log.message.split('|')[1] || 'unknown';
22         log.message = log.message.split('|')[0];
23         versions.push(log);
24       });
25       //logs.all = _.take(logs.all, 10);
26       console.log("Latest available tag: %s", logs.latest);
27       return res.status(200).send(versions);
28     });
29 };
30
31 // Get a single update
32 exports.show = function(req, res) {
33
34 };
35
36 // Get a single update
37 exports.pull = function(req, res) {
38   Git
39     .pull(function(err, update) {
40       if (err) {
41         return handleError(res, err);
42       }
43       return res.status(201).send(update);
44     });
45 };
46
47 // Get a single update
48 exports.checkout = function(req, res) {
49   console.log('req.params.hash', req.params.hash);
50   Git
51     .checkout(req.params.hash, function(err, update) {
52       if (err) {
53         return handleError(res, err);
54       }
55       return res.status(201).send(update);
56     });
57 };
58
59 // Creates a new update in the DB.
60 exports.create = function(req, res) {
61   Update
62     .create(req.body)
63     .then(function(update) {
64       return res.status(201).send(update);
65     })
66     .catch(function(err) {
67       return handleError(res, err);
68     });
69 };
70
71 // Updates an existing update in the DB.
72 exports.update = function(req, res) {
73   if (req.body.id) {
74     delete req.body.id;
75   }
76   Update
77     .find({
78       where: {
79         id: req.params.id
80       }
81     })
82     .then(function(update) {
83       if (!update) {
84         return res.sendStatus(404);
85       }
86       var updated = _.merge(update, req.body);
87       updated.save()
88         .then(function() {
89           return res.status(200).send(update);
90         })
91         .catch(function(err) {
92           return handleError(res, err);
93         });
94     })
95     .catch(function(err) {
96       return handleError(res, err);
97     });
98 };
99
100 // Deletes a update from the DB.
101 exports.destroy = function(req, res) {
102   Update
103     .find({
104       where: {
105         id: req.params.id
106       }
107     })
108     .then(function(update) {
109       if (!update) {
110         return res.sendStatus(404);
111       }
112       update.destroy()
113         .then(function() {
114           return res.sendStatus(204);
115         })
116         .catch(function(err) {
117           return handleError(res, err);
118         });
119     })
120     .catch(function(err) {
121       return handleError(res, err);
122     });
123 };
124
125 function handleError(res, err) {
126   return res.status(500).send(err);
127 }