Added user_id and exp_id (disinction between both)
This commit is contained in:
parent
c82f735273
commit
fa063a0f91
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports.getInfo = function(id, callback) { new Info(id, callback); };
|
var ExpGetter = function(finishAction) {
|
||||||
module.exports.createId = function(callback) { new IdCreator(callback); };
|
this.finishAction = finishAction;
|
||||||
module.exports.checkId = function(id, callback) { new IdChecker(id, callback); };
|
|
||||||
module.exports.getAllUsers = function(callback) { new UserGetter(callback); };
|
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.createUser = function(callback) { new UserCreator(callback); };
|
||||||
|
module.exports.createExp = function(id, callback) { new ExpCreator(id, 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;
|
||||||
|
|
|
@ -13,13 +13,16 @@ 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) {
|
||||||
req.session.user_id = id;
|
db.createExp(id, function(id) {
|
||||||
req.session.save();
|
req.session.exp_id = id;
|
||||||
|
req.session.user_id = id;
|
||||||
|
req.session.save();
|
||||||
|
|
||||||
res.setHeader('Content-Type','text/html');
|
res.setHeader('Content-Type','text/html');
|
||||||
res.render(template, res.locals, function(err, result) {
|
res.render(template, res.locals, function(err, result) {
|
||||||
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…
Reference in New Issue