Added user_id and exp_id (disinction between both)
This commit is contained in:
		
							parent
							
								
									c82f735273
								
							
						
					
					
						commit
						fa063a0f91
					
				
							
								
								
									
										134
									
								
								controllers/prototype/dbrequests.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										134
									
								
								controllers/prototype/dbrequests.js
									
									
									
									
										vendored
									
									
								
							| @ -88,7 +88,7 @@ Info.prototype.loadCameras = function() { | |||||||
|             "((camera).target).y   AS ty, " + |             "((camera).target).y   AS ty, " + | ||||||
|             "((camera).target).z   AS tz, " + |             "((camera).target).z   AS tz, " + | ||||||
|             "time                  AS time " + |             "time                  AS time " + | ||||||
|             "FROM keyboardevent WHERE user_id = $1 ORDER BY time;", |             "FROM keyboardevent WHERE exp_id = $1 ORDER BY time;", | ||||||
|         [self.id], |         [self.id], | ||||||
|         function(err, result) { |         function(err, result) { | ||||||
|             self.results.cameras = []; |             self.results.cameras = []; | ||||||
| @ -119,7 +119,7 @@ Info.prototype.loadCameras = function() { | |||||||
| Info.prototype.loadCoins = function() { | Info.prototype.loadCoins = function() { | ||||||
|     var self = this; |     var self = this; | ||||||
|     this.client.query( |     this.client.query( | ||||||
|         "SELECT coin_id, time FROM coinclicked WHERE user_id = $1 ORDER BY time;", |         "SELECT coin_id, time FROM coinclicked WHERE exp_id = $1 ORDER BY time;", | ||||||
|         [self.id], |         [self.id], | ||||||
|         function(err,result) { |         function(err,result) { | ||||||
|             self.results.coins = []; |             self.results.coins = []; | ||||||
| @ -141,7 +141,7 @@ Info.prototype.loadCoins = function() { | |||||||
| Info.prototype.loadArrows = function() { | Info.prototype.loadArrows = function() { | ||||||
|     var self = this; |     var self = this; | ||||||
|     this.client.query( |     this.client.query( | ||||||
|         "SELECT arrow_id, time FROM arrowclicked WHERE user_id = $1 ORDER BY time;", |         "SELECT arrow_id, time FROM arrowclicked WHERE exp_id = $1 ORDER BY time;", | ||||||
|         [self.id], |         [self.id], | ||||||
|         function(err, result) { |         function(err, result) { | ||||||
|             self.results.arrows = []; |             self.results.arrows = []; | ||||||
| @ -163,7 +163,7 @@ Info.prototype.loadArrows = function() { | |||||||
| Info.prototype.loadResets = function() { | Info.prototype.loadResets = function() { | ||||||
|     var self = this; |     var self = this; | ||||||
|     this.client.query( |     this.client.query( | ||||||
|         "SELECT time FROM resetclicked WHERE user_id = $1 ORDER BY time;", |         "SELECT time FROM resetclicked WHERE exp_id = $1 ORDER BY time;", | ||||||
|         [self.id], |         [self.id], | ||||||
|         function(err, result) { |         function(err, result) { | ||||||
|             self.results.resets = []; |             self.results.resets = []; | ||||||
| @ -191,7 +191,7 @@ Info.prototype.loadPreviousNext = function () { | |||||||
|             "((camera).target).y   AS ty, " + |             "((camera).target).y   AS ty, " + | ||||||
|             "((camera).target).z   AS tz, " + |             "((camera).target).z   AS tz, " + | ||||||
|             "time                  AS time " + |             "time                  AS time " + | ||||||
|             "FROM previousnextclicked WHERE user_id = $1 ORDER BY time;", |             "FROM previousnextclicked WHERE exp_id = $1 ORDER BY time;", | ||||||
|         [self.id], |         [self.id], | ||||||
|         function(err, result) { |         function(err, result) { | ||||||
|             self.results.previousNext = []; |             self.results.previousNext = []; | ||||||
| @ -223,7 +223,7 @@ Info.prototype.loadPreviousNext = function () { | |||||||
| Info.prototype.loadHovered = function() { | Info.prototype.loadHovered = function() { | ||||||
|     var self = this; |     var self = this; | ||||||
|     this.client.query( |     this.client.query( | ||||||
|         "SELECT start, time, arrow_id FROM hovered WHERE user_id = $1 ORDER BY time;", |         "SELECT start, time, arrow_id FROM hovered WHERE exp_id = $1 ORDER BY time;", | ||||||
|         [self.id], |         [self.id], | ||||||
|         function(err, result) { |         function(err, result) { | ||||||
|             self.results.hovered = []; |             self.results.hovered = []; | ||||||
| @ -243,7 +243,7 @@ Info.prototype.loadHovered = function() { | |||||||
|     ); |     ); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| var IdCreator = function(finishAction) { | var UserCreator = function(finishAction) { | ||||||
|     this.finishAction = finishAction; |     this.finishAction = finishAction; | ||||||
| 
 | 
 | ||||||
|     // Connect to db
 |     // Connect to db
 | ||||||
| @ -255,7 +255,7 @@ var IdCreator = function(finishAction) { | |||||||
|     }); |     }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| IdCreator.prototype.execute = function() { | UserCreator.prototype.execute = function() { | ||||||
|     var self = this; |     var self = this; | ||||||
|     this.client.query( |     this.client.query( | ||||||
|         "INSERT INTO users(name) VALUES('anonymous'); SELECT currval('users_id_seq');", |         "INSERT INTO users(name) VALUES('anonymous'); SELECT currval('users_id_seq');", | ||||||
| @ -267,7 +267,7 @@ IdCreator.prototype.execute = function() { | |||||||
|     ); |     ); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| IdCreator.prototype.finish = function() { | UserCreator.prototype.finish = function() { | ||||||
|     this.release(); |     this.release(); | ||||||
|     this.client = null; |     this.client = null; | ||||||
|     this.release = null; |     this.release = null; | ||||||
| @ -275,7 +275,43 @@ IdCreator.prototype.finish = function() { | |||||||
|     this.finishAction(this.finalResult); |     this.finishAction(this.finalResult); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| var IdChecker = function(id, finishAction) { | var ExpCreator = function(user_id, finishAction) { | ||||||
|  |     this.finishAction = finishAction; | ||||||
|  |     this.user_id = user_id; | ||||||
|  | 
 | ||||||
|  |     // Connect to db
 | ||||||
|  |     var self = this; | ||||||
|  |     pg.connect(pgc.url, function(err, client, release) { | ||||||
|  |         self.client = client; | ||||||
|  |         self.release = release; | ||||||
|  |         self.execute(); | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ExpCreator.prototype.execute = function() { | ||||||
|  |     var self = this; | ||||||
|  |     this.client.query( | ||||||
|  |         // TODO this is ugly, we should not do that...
 | ||||||
|  |         "INSERT INTO experiment(user_id, scene_id) VALUES(" + this.user_id + " , 1); SELECT currval('experiment_id_seq');", | ||||||
|  |         [], | ||||||
|  |         function(err, result) { | ||||||
|  |             console.log(self.user_id); | ||||||
|  |             console.log(err); | ||||||
|  |             self.finalResult = result.rows[0].currval; | ||||||
|  |             self.finish(); | ||||||
|  |         } | ||||||
|  |     ); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ExpCreator.prototype.finish = function() { | ||||||
|  |     this.release(); | ||||||
|  |     this.client = null; | ||||||
|  |     this.release = null; | ||||||
|  | 
 | ||||||
|  |     this.finishAction(this.finalResult); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var UserIdChecker = function(id, finishAction) { | ||||||
|     this.id = id; |     this.id = id; | ||||||
|     this.finishAction = finishAction; |     this.finishAction = finishAction; | ||||||
| 
 | 
 | ||||||
| @ -287,7 +323,7 @@ var IdChecker = function(id, finishAction) { | |||||||
|     }); |     }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| IdChecker.prototype.execute = function() { | UserIdChecker.prototype.execute = function() { | ||||||
|     var self = this; |     var self = this; | ||||||
|     this.client.query( |     this.client.query( | ||||||
|         "SELECT count(id) > 0 AS answer FROM users WHERE id = $1;", |         "SELECT count(id) > 0 AS answer FROM users WHERE id = $1;", | ||||||
| @ -299,7 +335,7 @@ IdChecker.prototype.execute = function() { | |||||||
|     ); |     ); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| IdChecker.prototype.finish = function() { | UserIdChecker.prototype.finish = function() { | ||||||
|     this.release(); |     this.release(); | ||||||
|     this.client = null; |     this.client = null; | ||||||
|     this.release = null; |     this.release = null; | ||||||
| @ -307,7 +343,8 @@ IdChecker.prototype.finish = function() { | |||||||
|     this.finishAction(this.finalResult); |     this.finishAction(this.finalResult); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| var UserGetter = function(finishAction) { | var ExpIdChecker = function(id, finishAction) { | ||||||
|  |     this.id = id; | ||||||
|     this.finishAction = finishAction; |     this.finishAction = finishAction; | ||||||
| 
 | 
 | ||||||
|     var self = this; |     var self = this; | ||||||
| @ -318,19 +355,19 @@ var UserGetter = function(finishAction) { | |||||||
|     }); |     }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| UserGetter.prototype.execute = function() { | ExpIdChecker.prototype.execute = function() { | ||||||
|     var self = this; |     var self = this; | ||||||
|     this.client.query( |     this.client.query( | ||||||
|         "SELECT id, name FROM users", |         "SELECT count(id) > 0 AS answer FROM experiment WHERE id = $1;", | ||||||
|         [], |         [self.id], | ||||||
|         function(err, result) { |         function(err, result) { | ||||||
|             self.finalResult = result.rows; |             self.finalResult = result.rows[0].answer; | ||||||
|             self.finish(); |             self.finish(); | ||||||
|         } |         } | ||||||
|     ); |     ); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| UserGetter.prototype.finish = function() { | ExpIdChecker.prototype.finish = function() { | ||||||
|     this.release(); |     this.release(); | ||||||
|     this.client = null; |     this.client = null; | ||||||
|     this.release = null; |     this.release = null; | ||||||
| @ -338,7 +375,62 @@ UserGetter.prototype.finish = function() { | |||||||
|     this.finishAction(this.finalResult); |     this.finishAction(this.finalResult); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | var ExpGetter = function(finishAction) { | ||||||
|  |     this.finishAction = finishAction; | ||||||
|  | 
 | ||||||
|  |     var self = this; | ||||||
|  |     pg.connect(pgc.url, function(err, client, release) { | ||||||
|  |         self.client = client; | ||||||
|  |         self.release = release; | ||||||
|  |         self.execute(); | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ExpGetter.prototype.execute = function() { | ||||||
|  |     var self = this; | ||||||
|  |     this.client.query( | ||||||
|  |         "SELECT  " + | ||||||
|  |             "experiment.id as exp_id, " + | ||||||
|  |             "users.name as username, " + | ||||||
|  |             "scene.name as scenename " + | ||||||
|  |         "FROM experiment, users, scene " + | ||||||
|  |         "WHERE experiment.user_id = user_id and scene.id = experiment.scene_id " + | ||||||
|  |         "ORDER BY experiment.id;", | ||||||
|  |         [], | ||||||
|  |         function(err, result) { | ||||||
|  |             console.log(err); | ||||||
|  |             self.finalResult = result.rows; | ||||||
|  |             self.finish(); | ||||||
|  |         } | ||||||
|  |     ); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ExpGetter.prototype.finish = function() { | ||||||
|  |     this.release(); | ||||||
|  |     this.client = null; | ||||||
|  |     this.release = null; | ||||||
|  | 
 | ||||||
|  |     this.finishAction(this.finalResult); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var tryUser = function(id, callback) { | ||||||
|  |     if (id !== undefined && id !== null) { | ||||||
|  |         new UserIdChecker(id, function(clear) { | ||||||
|  |             if (clear) { | ||||||
|  |                 callback(id); | ||||||
|  |             } else { | ||||||
|  |                 new UserCreator(callback); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     } else { | ||||||
|  |         new UserCreator(callback); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| module.exports.getInfo      = function(id, callback) { new Info(id, callback);          }; | module.exports.getInfo      = function(id, callback) { new Info(id, callback);          }; | ||||||
| module.exports.createId     = function(callback)     { new IdCreator(callback);     }; | module.exports.createUser   = function(callback)     { new UserCreator(callback);       }; | ||||||
| module.exports.checkId      = function(id, callback) { new IdChecker(id, callback); }; | module.exports.createExp    = function(id, callback) { new ExpCreator(id, callback);    }; | ||||||
| module.exports.getAllUsers  = function(callback)     { new UserGetter(callback);    }; | module.exports.checkUserId  = function(id, callback) { new UserIdChecker(id, callback); }; | ||||||
|  | module.exports.checkExpId   = function(id, callback) { new ExpIdChecker(id, callback);  }; | ||||||
|  | module.exports.getAllExps   = function(callback)     { new ExpGetter(callback);         }; | ||||||
|  | module.exports.tryUser = tryUser; | ||||||
|  | |||||||
							
								
								
									
										9
									
								
								controllers/prototype/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								controllers/prototype/index.js
									
									
									
									
										vendored
									
									
								
							| @ -13,7 +13,9 @@ module.exports.index = function(req, res) { | |||||||
| 
 | 
 | ||||||
| var protoHelper = function(template) { | var protoHelper = function(template) { | ||||||
|     return function(req, res) { |     return function(req, res) { | ||||||
|         db.createId(function(id) { |         db.tryUser(req.session.user_id, function(id) { | ||||||
|  |             db.createExp(id, function(id) { | ||||||
|  |                 req.session.exp_id = id; | ||||||
|                 req.session.user_id = id; |                 req.session.user_id = id; | ||||||
|                 req.session.save(); |                 req.session.save(); | ||||||
| 
 | 
 | ||||||
| @ -22,6 +24,7 @@ var protoHelper = function(template) { | |||||||
|                     res.send(result); |                     res.send(result); | ||||||
|                 }); |                 }); | ||||||
|             }); |             }); | ||||||
|  |         }); | ||||||
|     }; |     }; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -44,7 +47,7 @@ module.exports.replay = function(req, res, next) { | |||||||
|     // Get id parameter
 |     // Get id parameter
 | ||||||
|     res.locals.id = tools.filterInt(req.params.id); |     res.locals.id = tools.filterInt(req.params.id); | ||||||
| 
 | 
 | ||||||
|     db.checkId(res.locals.id, function(idExist) { |     db.checkExpId(res.locals.id, function(idExist) { | ||||||
|         if (!idExist) { |         if (!idExist) { | ||||||
|             var err = new Error("This replay does not exist"); |             var err = new Error("This replay does not exist"); | ||||||
|             err.status = 404; |             err.status = 404; | ||||||
| @ -59,7 +62,7 @@ module.exports.replay = function(req, res, next) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| module.exports.replay_index = function(req, res, next) { | module.exports.replay_index = function(req, res, next) { | ||||||
|     db.getAllUsers(function(result) { |     db.getAllExps(function(result) { | ||||||
|         res.locals.users = result; |         res.locals.users = result; | ||||||
| 
 | 
 | ||||||
|         res.setHeader('Content-Type', 'text/html'); |         res.setHeader('Content-Type', 'text/html'); | ||||||
|  | |||||||
| @ -10,4 +10,4 @@ block content | |||||||
|     else |     else | ||||||
|         ol |         ol | ||||||
|             each elt in users |             each elt in users | ||||||
|                 li <a href="/prototype/replay/#{elt.id}">#{elt.name}</a> |                 li <a href="/prototype/replay/#{elt.id}">User <em>#{elt.username}</em> for scene <em>#{elt.scenename}</em></a> | ||||||
|  | |||||||
| @ -3,13 +3,10 @@ var secret = require('../../private'); | |||||||
| 
 | 
 | ||||||
| module.exports.index = function(req, res) { | module.exports.index = function(req, res) { | ||||||
| 
 | 
 | ||||||
|     var user_id = req.session.user_id; |  | ||||||
|     var arrow_id = req.body.arrow_id; |  | ||||||
| 
 |  | ||||||
|     pg.connect(secret.url, function(err, client, release) { |     pg.connect(secret.url, function(err, client, release) { | ||||||
|         client.query( |         client.query( | ||||||
|             "INSERT INTO arrowclicked(user_id, arrow_id, time) VALUES($1,$2, to_timestamp($3));", |             "INSERT INTO arrowclicked(exp_id, arrow_id, time) VALUES($1,$2, to_timestamp($3));", | ||||||
|             [user_id, arrow_id, req.body.time], |             [req.session.exp_id, req.body.arrow_id, req.body.time], | ||||||
|             function(err, result) { |             function(err, result) { | ||||||
|                 release(); |                 release(); | ||||||
|             } |             } | ||||||
| @ -17,6 +14,4 @@ module.exports.index = function(req, res) { | |||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     res.setHeader('Content-Type', 'text/html'); |     res.setHeader('Content-Type', 'text/html'); | ||||||
|     res.send("user_id = " + user_id); |  | ||||||
| 
 |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -3,13 +3,10 @@ var secret = require('../../private'); | |||||||
| 
 | 
 | ||||||
| module.exports.index = function(req, res) { | module.exports.index = function(req, res) { | ||||||
| 
 | 
 | ||||||
|     var user_id = req.session.user_id; |  | ||||||
|     var coin_id = req.body.coin_id; |  | ||||||
| 
 |  | ||||||
|     pg.connect(secret.url, function(err, client, release) { |     pg.connect(secret.url, function(err, client, release) { | ||||||
|         client.query( |         client.query( | ||||||
|             "INSERT INTO coinclicked(user_id, coin_id, time) VALUES($1,$2, to_timestamp($3));", |             "INSERT INTO coinclicked(exp_id, coin_id, time) VALUES($1,$2, to_timestamp($3));", | ||||||
|             [user_id, coin_id, req.body.time], |             [req.session.exp_id, req.body.coin_id, req.body.time], | ||||||
|             function(err, result) { |             function(err, result) { | ||||||
|                 release(); |                 release(); | ||||||
|             } |             } | ||||||
| @ -17,6 +14,5 @@ module.exports.index = function(req, res) { | |||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     res.setHeader('Content-Type', 'text/html'); |     res.setHeader('Content-Type', 'text/html'); | ||||||
|     res.send("user_id = " + user_id); |     res.send(""); | ||||||
| 
 |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -3,14 +3,12 @@ var secret = require('../../private'); | |||||||
| 
 | 
 | ||||||
| module.exports.index = function(req, res) { | module.exports.index = function(req, res) { | ||||||
| 
 | 
 | ||||||
|     var user_id = req.session.user_id; |  | ||||||
| 
 |  | ||||||
|     pg.connect(secret.url, function(err, client, release) { |     pg.connect(secret.url, function(err, client, release) { | ||||||
|         client.query( |         client.query( | ||||||
|             "INSERT INTO hovered(user_id, time, start, arrow_id)" + |             "INSERT INTO hovered(exp_id, time, start, arrow_id)" + | ||||||
|             "VALUES($1, to_timestamp($2), $3, $4);" , |             "VALUES($1, to_timestamp($2), $3, $4);" , | ||||||
|             [ |             [ | ||||||
|                 user_id, |                 req.session.exp_id, | ||||||
|                 req.body.time, |                 req.body.time, | ||||||
|                 req.body.start ? true : false, |                 req.body.start ? true : false, | ||||||
|                 req.body.arrow_id |                 req.body.arrow_id | ||||||
| @ -22,6 +20,5 @@ module.exports.index = function(req, res) { | |||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     res.setHeader('Content-Type', 'text/html'); |     res.setHeader('Content-Type', 'text/html'); | ||||||
|     res.send("user_id = " + user_id); |     res.send(""); | ||||||
| 
 |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -3,22 +3,19 @@ var secret = require('../../private'); | |||||||
| 
 | 
 | ||||||
| module.exports.index = function(req, res) { | module.exports.index = function(req, res) { | ||||||
| 
 | 
 | ||||||
|     var user_id = req.session.user_id; |  | ||||||
|     var camera = req.body.camera; |  | ||||||
| 
 |  | ||||||
|     pg.connect(secret.url, function(err, client, release) { |     pg.connect(secret.url, function(err, client, release) { | ||||||
|         client.query( |         client.query( | ||||||
|             "INSERT INTO keyboardevent(user_id, camera, time)" + |             "INSERT INTO keyboardevent(exp_id, camera, time)" + | ||||||
|             "VALUES($1, ROW(ROW($2,$3,$4),ROW($5,$6,$7)), to_timestamp($8));" , |             "VALUES($1, ROW(ROW($2,$3,$4),ROW($5,$6,$7)), to_timestamp($8));" , | ||||||
|             [ |             [ | ||||||
|                 user_id, |                 req.session.exp_id, | ||||||
|                 camera.position.x, |                 req.body.camera.position.x, | ||||||
|                 camera.position.y, |                 req.body.camera.position.y, | ||||||
|                 camera.position.z, |                 req.body.camera.position.z, | ||||||
| 
 | 
 | ||||||
|                 camera.target.x, |                 req.body.camera.target.x, | ||||||
|                 camera.target.y, |                 req.body.camera.target.y, | ||||||
|                 camera.target.z, |                 req.body.camera.target.z, | ||||||
| 
 | 
 | ||||||
|                 req.body.time |                 req.body.time | ||||||
|             ], |             ], | ||||||
| @ -29,6 +26,5 @@ module.exports.index = function(req, res) { | |||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     res.setHeader('Content-Type', 'text/html'); |     res.setHeader('Content-Type', 'text/html'); | ||||||
|     res.send("user_id = " + user_id); |     res.send("") | ||||||
| 
 |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -3,23 +3,20 @@ var secret = require('../../private'); | |||||||
| 
 | 
 | ||||||
| module.exports.index = function(req, res) { | module.exports.index = function(req, res) { | ||||||
| 
 | 
 | ||||||
|     var user_id = req.session.user_id; |  | ||||||
|     var camera = req.body.camera; |  | ||||||
| 
 |  | ||||||
|     pg.connect(secret.url, function(err, client, release) { |     pg.connect(secret.url, function(err, client, release) { | ||||||
|         client.query( |         client.query( | ||||||
|             "INSERT INTO previousnextclicked(user_id, previousnext, time, camera)" + |             "INSERT INTO previousnextclicked(exp_id, previousnext, time, camera)" + | ||||||
|             "VALUES($1, $2, to_timestamp($3), ROW(ROW($4,$5,$6), ROW($7,$8,$9)));" , |             "VALUES($1, $2, to_timestamp($3), ROW(ROW($4,$5,$6), ROW($7,$8,$9)));" , | ||||||
|             [ |             [ | ||||||
|                 user_id, |                 req.session.exp_id, | ||||||
|                 req.body.previous ? 'p' : 'n', |                 req.body.previous ? 'p' : 'n', | ||||||
|                 req.body.time, |                 req.body.time, | ||||||
|                 camera.position.x, |                 req.body.camera.position.x, | ||||||
|                 camera.position.y, |                 req.body.camera.position.y, | ||||||
|                 camera.position.z, |                 req.body.camera.position.z, | ||||||
|                 camera.target.x, |                 req.body.camera.target.x, | ||||||
|                 camera.target.y, |                 req.body.camera.target.y, | ||||||
|                 camera.target.z |                 req.body.camera.target.z | ||||||
|             ], |             ], | ||||||
|             function(err, result) { |             function(err, result) { | ||||||
|                 release(); |                 release(); | ||||||
| @ -28,6 +25,6 @@ module.exports.index = function(req, res) { | |||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     res.setHeader('Content-Type', 'text/html'); |     res.setHeader('Content-Type', 'text/html'); | ||||||
|     res.send("user_id = " + user_id); |     res.send(""); | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
| @ -3,15 +3,12 @@ var secret = require('../../private'); | |||||||
| 
 | 
 | ||||||
| module.exports.index = function(req, res) { | module.exports.index = function(req, res) { | ||||||
| 
 | 
 | ||||||
|     var user_id = req.session.user_id; |  | ||||||
|     var camera = req.body.camera; |  | ||||||
| 
 |  | ||||||
|     pg.connect(secret.url, function(err, client, release) { |     pg.connect(secret.url, function(err, client, release) { | ||||||
|         client.query( |         client.query( | ||||||
|             "INSERT INTO resetclicked(user_id, time)" + |             "INSERT INTO resetclicked(exp_id, time)" + | ||||||
|             "VALUES($1, to_timestamp($2));" , |             "VALUES($1, to_timestamp($2));" , | ||||||
|             [ |             [ | ||||||
|                 user_id, |                 req.session.exp_id, | ||||||
|                 req.body.time |                 req.body.time | ||||||
|             ], |             ], | ||||||
|             function(err, result) { |             function(err, result) { | ||||||
| @ -21,6 +18,6 @@ module.exports.index = function(req, res) { | |||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     res.setHeader('Content-Type', 'text/html'); |     res.setHeader('Content-Type', 'text/html'); | ||||||
|     res.send("user_id = " + user_id); |     res.send(""); | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,3 +1,4 @@ | |||||||
|  | -- Clear database from previous tables (just in case...) | ||||||
| DROP TABLE IF EXISTS users CASCADE; | DROP TABLE IF EXISTS users CASCADE; | ||||||
| DROP TABLE IF EXISTS arrowclicked CASCADE; | DROP TABLE IF EXISTS arrowclicked CASCADE; | ||||||
| DROP TABLE IF EXISTS coinclicked CASCADE; | DROP TABLE IF EXISTS coinclicked CASCADE; | ||||||
| @ -5,11 +6,14 @@ DROP TABLE IF EXISTS keyboardevent CASCADE; | |||||||
| DROP TABLE IF EXISTS resetclicked CASCADE; | DROP TABLE IF EXISTS resetclicked CASCADE; | ||||||
| DROP TABLE IF EXISTS previousnextclicked CASCADE; | DROP TABLE IF EXISTS previousnextclicked CASCADE; | ||||||
| DROP TABLE IF EXISTS hovered CASCADE; | DROP TABLE IF EXISTS hovered CASCADE; | ||||||
|  | DROP TABLE IF EXISTS scene CASCADE; | ||||||
|  | DROP TABLE IF EXISTS experiment CASCADE; | ||||||
| 
 | 
 | ||||||
| DROP TYPE IF EXISTS VECTOR3 CASCADE; | DROP TYPE IF EXISTS VECTOR3 CASCADE; | ||||||
| DROP TYPE IF EXISTS CAMERA CASCADE; | DROP TYPE IF EXISTS CAMERA CASCADE; | ||||||
| DROP TYPE IF EXISTS PREVIOUSNEXT CASCADE; | DROP TYPE IF EXISTS PREVIOUSNEXT CASCADE; | ||||||
| 
 | 
 | ||||||
|  | -- Elementary types | ||||||
| CREATE TYPE PREVIOUSNEXT AS ENUM( | CREATE TYPE PREVIOUSNEXT AS ENUM( | ||||||
|     'p', 'n' |     'p', 'n' | ||||||
| ); | ); | ||||||
| @ -25,41 +29,60 @@ CREATE TYPE CAMERA AS( | |||||||
|     target VECTOR3 |     target VECTOR3 | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
|  | -- Base tables | ||||||
| CREATE TABLE users( | CREATE TABLE users( | ||||||
|     id SERIAL PRIMARY KEY, |     id SERIAL PRIMARY KEY, | ||||||
|     name CHAR(50) |     name CHAR(50) | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
| CREATE TABLE arrowclicked( | CREATE TABLE scene( | ||||||
|  |     id SERIAL PRIMARY KEY, | ||||||
|  |     name CHAR(50) | ||||||
|  | ); | ||||||
|  | 
 | ||||||
|  | CREATE TABLE experiment( | ||||||
|     id SERIAL PRIMARY KEY, |     id SERIAL PRIMARY KEY, | ||||||
|     user_id SERIAL REFERENCES users (id), |     user_id SERIAL REFERENCES users (id), | ||||||
|  |     scene_id SERIAL REFERENCES scene (id) | ||||||
|  | ); | ||||||
|  | 
 | ||||||
|  | -- Init scene table | ||||||
|  | INSERT INTO scene(name) VALUES ('peachcastle'); | ||||||
|  | INSERT INTO scene(name) VALUES ('bobomb'); | ||||||
|  | INSERT INTO scene(name) VALUES ('coolcoolmountain'); | ||||||
|  | INSERT INTO scene(name) VALUES ('whomp'); | ||||||
|  | 
 | ||||||
|  | -- Events | ||||||
|  | CREATE TABLE arrowclicked( | ||||||
|  |     id SERIAL PRIMARY KEY, | ||||||
|  |     exp_id SERIAL REFERENCES experiment (id), | ||||||
|     time TIMESTAMP DEFAULT NOW(), |     time TIMESTAMP DEFAULT NOW(), | ||||||
|     arrow_id INTEGER |     arrow_id INTEGER | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
| CREATE TABLE coinclicked( | CREATE TABLE coinclicked( | ||||||
|     id SERIAL PRIMARY KEY, |     id SERIAL PRIMARY KEY, | ||||||
|     user_id SERIAL REFERENCES users (id), |     exp_id SERIAL REFERENCES experiment (id), | ||||||
|     time TIMESTAMP DEFAULT NOW(), |     time TIMESTAMP DEFAULT NOW(), | ||||||
|     coin_id INTEGER |     coin_id INTEGER | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
| CREATE TABLE keyboardevent( | CREATE TABLE keyboardevent( | ||||||
|     id SERIAL PRIMARY KEY, |     id SERIAL PRIMARY KEY, | ||||||
|     user_id SERIAL REFERENCES users (id), |     exp_id SERIAL REFERENCES experiment (id), | ||||||
|     time TIMESTAMP DEFAULT NOW(), |     time TIMESTAMP DEFAULT NOW(), | ||||||
|     camera CAMERA |     camera CAMERA | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
| CREATE TABLE resetclicked( | CREATE TABLE resetclicked( | ||||||
|     id SERIAL PRIMARY KEY, |     id SERIAL PRIMARY KEY, | ||||||
|     user_id SERIAL REFERENCES users (id), |     exp_id SERIAL REFERENCES experiment (id), | ||||||
|     time TIMESTAMP DEFAULT NOW() |     time TIMESTAMP DEFAULT NOW() | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
| CREATE TABLE previousnextclicked( | CREATE TABLE previousnextclicked( | ||||||
|     id SERIAL PRIMARY KEY, |     id SERIAL PRIMARY KEY, | ||||||
|     user_id SERIAL REFERENCES users (id), |     exp_id SERIAL REFERENCES experiment (id), | ||||||
|     previousnext PREVIOUSNEXT NOT NULL, |     previousnext PREVIOUSNEXT NOT NULL, | ||||||
|     time TIMESTAMP DEFAULT NOW(), |     time TIMESTAMP DEFAULT NOW(), | ||||||
|     camera CAMERA |     camera CAMERA | ||||||
| @ -67,8 +90,8 @@ CREATE TABLE previousnextclicked( | |||||||
| 
 | 
 | ||||||
| CREATE TABLE hovered( | CREATE TABLE hovered( | ||||||
|     id SERIAL PRIMARY KEY, |     id SERIAL PRIMARY KEY, | ||||||
|     user_id SERIAL REFERENCES users (id), |     exp_id SERIAL REFERENCES experiment (id), | ||||||
|     start BOOLEAN NOT NULL, |     start BOOLEAN NOT NULL, | ||||||
|     time TIMESTAMP DEFAULT NOW(), |     time TIMESTAMP DEFAULT NOW(), | ||||||
|     arrow_id INT |     arrow_id INTEGER | ||||||
| ); | ); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user