diff --git a/models/task.js b/models/task.js new file mode 100644 index 0000000..fd9893a --- /dev/null +++ b/models/task.js @@ -0,0 +1,14 @@ +var Sequelize = require('sequelize'); + +module.exports = { + instance: function(orm) { + task = orm.define('Tasks', { + content: Sequelize.STRING, + parent: Sequelize.INTEGER, + is_completed: Sequelize.BOOLEAN + }); + + orm.sync(); + return task; + } +} diff --git a/orm.js b/orm.js new file mode 100644 index 0000000..e71ca3a --- /dev/null +++ b/orm.js @@ -0,0 +1,7 @@ +var Sequelize = require('sequelize'); + +module.exports = { + configure: function(db) { + return new Sequelize(db.name, db.user, db.password, db.options); + } +} diff --git a/package.json b/package.json index a399418..5612c88 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,8 @@ "express": "~3.1.0", "path": "~0.4.9", "mysql": "~2.0.0", + "sqlite3": "~2.1.0", + "sequelize": "~2.0.0", "socket.io": "*" } } diff --git a/sample.config.js b/sample.config.js index 87fb307..ae19637 100644 --- a/sample.config.js +++ b/sample.config.js @@ -1,6 +1,11 @@ var config = { - db_user: "", - db_password: "", - db_name: "" + db: { + user : '', + password : '', + name : '', + options : { + dialect: 'sqlite' + } + } }; -module.exports = config; \ No newline at end of file +module.exports = config; diff --git a/server.js b/server.js index bfe76fc..9a6f556 100644 --- a/server.js +++ b/server.js @@ -3,18 +3,11 @@ var application_root = __dirname, app = express(), path = require('path'), config = require('./config'), - mysql = require('mysql'), + orm = require('./orm').configure(config.db), + Tasks = require('./models/task').instance(orm), server = require('http').createServer(app), io = require('socket.io').listen(server); -var client = mysql.createConnection({ - host: 'localhost', - user: config.db_user, - password: config.db_password -}); - -client.query('USE '+config.db_name); - app.configure(function() { app.use(express.bodyParser()); app.use(express.methodOverride()); @@ -29,32 +22,37 @@ server.listen(port, function() { }); app.get('/tasks', function(req,res){ - client.query("SELECT * FROM tasks", function select(err,tasks){ + Tasks.all().success(function(tasks){ res.send(tasks); }); }); app.post('/tasks', function(req,res){ - var timestamp = Math.round((new Date()).getTime()/1000); - client.query("INSERT INTO tasks (content, timestamp, parent_id) VALUES (?,?,?)", [req.body.content,timestamp,req.body.parent_id]); - client.query("SELECT * FROM tasks WHERE content = ?", [req.body.content], function select(err,task){ - req.body.id = task[0].id; - res.send(req.body); + Tasks.create({ + content: req.body.content, + parent: req.body.parent_id, + is_completed: false, + }).success(function(task){ + res.send(task); }); }); app.put('/tasks/:id', function(req,res){ console.log(req.body.is_completed); - var timestamp = Math.round((new Date()).getTime()/1000); - client.query("UPDATE tasks SET content = ?, timestamp = ?, is_completed = ? WHERE id = ?", [req.body.content, timestamp, req.body.is_completed, req.body.id], function(err, task){ - req.body.timestamp = timestamp; - res.send(req.body); + Tasks.find(req.params.id).success(function(task){ + task.content = req.body.content; + task.is_completed = req.body.is_completed; + task.save().success(function(task){ + res.send(task); + }) }); }); app.delete('/tasks/:id', function(req,res){ - client.query("DELETE FROM tasks WHERE id = ?", [req.params.id], function(err, task){ - res.send(''); + Tasks.find(req.params.id).success(function(task){ + task.destroy().success(function(){ + res.send(''); + }); }) });