Initial Sequelize integration.

Added orm module to abstract Sequelize usage to some degree. ORM module
handles the configuration and instantiation of Sequelize. Models are
defined and instantiated from models/*

Tested only against SQLite.

Faily new to nodejs so I probably messed up with something.
This commit is contained in:
DC*
2014-01-12 01:47:34 -03:00
parent 56ba4c6c61
commit 6faeab4b0b
5 changed files with 51 additions and 25 deletions
+14
View File
@@ -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;
}
}
+7
View File
@@ -0,0 +1,7 @@
var Sequelize = require('sequelize');
module.exports = {
configure: function(db) {
return new Sequelize(db.name, db.user, db.password, db.options);
}
}
+2
View File
@@ -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": "*"
}
}
+9 -4
View File
@@ -1,6 +1,11 @@
var config = {
db_user: "",
db_password: "",
db_name: ""
db: {
user : '',
password : '',
name : '',
options : {
dialect: 'sqlite'
}
}
};
module.exports = config;
module.exports = config;
+19 -21
View File
@@ -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('');
});
})
});