return new Promise(function(resolve, reject) { console.info('Fetching project data'); pg.connect(FROM_DB, function(err, client, release) { if ( err ) { return reject(err); } client.query({ text: queries.projects.findDataForRemix, values: [ FROM_PROJECT ] }, function(err, result) { release(); if ( err ) { return reject(err); } if ( !result.rows.length ) { return reject(new Error('No Project Found')); } resolve(formatRemixData(result.rows)); }); }); });
exports.query = function (sql, values, singleItem) { console.log(sql); console.log(values); console.log('databaseURL: ' + databaseURL); var deferred = Q.defer(); pg.connect(databaseURL, function (err, conn, done) { if (err) return deferred.reject(err); try { conn.query(sql, values, function (err, result) { done(); if (err) { deferred.reject(err); } else { deferred.resolve(singleItem ? result.rows[0] : result.rows); } }); } catch (e) { done(); deferred.reject(e); } }); return deferred.promise; };
Psql.prototype.down = function(migration, callback){ pg.connect( this.config, Driver.handle_error( callback, function(client) { client.query( "BEGIN", Driver.handle_error( callback, function(result){ client.query( migration.down, Driver.handle_error( callback, function(result){ client.query( "DELETE FROM migrations where name = $1", [migration.name], Driver.handle_error( callback, function(result){ client.query("COMMIT",callback); }) ); }) ); }) ); }) ); };
router.post('/:productid', function(req, res, next) { var productID = req.params.productid; var valuation = req.body.valuation; var user = req.body.user; pg.connect(global.databaseURI, function(err, client, done) { if(err){ console.error('Could not connect to the database'); console.error(err); return; } var QUERY = "UPDATE stock SET valuations=array_append(valuations, cast(%VALUE% AS numeric(10,2))), valuers=array_append(valuers, '%VALUER%') WHERE sid=%STOCKID%;"; QUERY = QUERY.replace("%VALUE%", valuation); QUERY = QUERY.replace("%VALUER%", user); QUERY = QUERY.replace("%STOCKID%", productID); console.log(QUERY); client.query(QUERY, function(error, result){ done(); if (error){ console.log(error); } console.log(result); }); res.send(); }); });
exports.details = function(req, res) { var body = 'get details'; var id = req.params['id']; console.log(req.session); console.log(id) var result = new Array(); pg.connect(process.env.DATABASE_URL, function(err, client, done) { if (err ){ console.log(err); done(client); return; } client.query("SELECT * FROM MARKERS WHERE UID = $1",[id], function (error, rst){ if (error){ result = {result:"error",error:error}; res.status(403); } else if (rst.rowCount == 0){ result = {result:"error",error:"marker not found"}; res.status(403); } else{ result = {result:"success",rowCount:rst.rowCount, rows:rst.rows} }//else res.json(result); done(); });//query }); };//details
Psql.prototype.up = function(migration, callback){ pg.connect( this.config, Driver.handle_error( callback, function(client) { client.query( "BEGIN", Driver.handle_error( callback, function(result){ client.query( migration.up, Driver.handle_error( callback, function(result){ client.query( "INSERT INTO migrations(name,updated) " + "VALUES($1,$2)", [migration.name, new Date()], Driver.handle_error( callback, function(result){ client.query("COMMIT",callback); }) ); }) ); }) ); }) ); };
router.post('/:name/delete', function(req, res, next) { pg.connect(global.databaseURI, function(err, client, done) { // Prepare the SQL query using string interpolation to populate username and password var QUERYSTRING = "DELETE FROM users WHERE username='******';".replace("%NAME%", req.params.name); // Check whether the connection to the database was successful if(err){ console.error('Could not connect to the database'); console.error(err); return; } console.log('Connected to database'); console.log(QUERYSTRING); // Execute the query -- an empty result indicates that the username:password pair does // not exist in the database // client.query(QUERYSTRING, function(error, result){ // // console.log(result); // console.log(error); // if(error) { // console.error('Failed to execute query'); // console.error(error); // return; // } // res.send(); // }); done(); }); });
router.get('/:name/sold', function(req, res, next) { console.log("Checking username " + req.params.name); pg.connect(global.databaseURI, function(err, client, done) { // Prepare the SQL query using string interpolation to populate username and password var QUERYSTRING = "SELECT * FROM stock WHERE uid=(SELECT uid FROM users WHERE username='******') AND (status='sold');".replace("%NAME%", req.params.name); // Check whether the connection to the database was successful if(err){ console.error('Could not connect to the database'); console.error(err); return; } console.log('Connected to database'); console.log(QUERYSTRING); // Execute the query -- an empty result indicates that the username:password pair does // not exist in the database client.query(QUERYSTRING, function(error, result){ done(); console.log(result); console.log(error); if(error) { console.error('Failed to execute query'); console.error(error); return; } res.send(result.rows); }) }); });
router.post('/complaint/:complaintid', function(req, res, next) { pg.connect(global.databaseURI, function(err, client, done) { if(err){ console.error('Could not connect to the database'); console.error(err); return; } var QUERY = "UPDATE product_complaints SET reviewed=true WHERE cid=%CID%;".replace("%CID%", req.params.complaintid); console.log(QUERY); client.query(QUERY, function(error, result){ if (error){ console.log(error); } res.send(); done(); }); }); });
router.post('/:productid', function(req, res, next) { var id = req.params.productid; var username = req.body.username; var complaint = req.body.complaint; console.log(req.body); pg.connect(global.databaseURI, function(err, client, done) { if(err){ console.error('Could not connect to the database'); console.error(err); return; } var QUERY = "INSERT INTO product_complaints(pid, username, complaint) VALUES (%PID%, '%USER%', '%COMPLAINT%');"; QUERY = QUERY.replace("%PID%", id); QUERY = QUERY.replace("%USER%", username); QUERY = QUERY.replace("%COMPLAINT%", complaint.replace(/'/g, "''")); console.log(QUERY); client.query(QUERY, function(error, result){ if (error){ console.log(error); } res.send(); done(); }); }); });
router.get('/regions', function(req, res) { if (!(req.query.country in countryData)) { res.json(404, {'error': 'this country does not exist'}); return; } else if (countryData[req.query.country].indexOf(req.query.city) < 0) { res.json(404, {'error': 'this city does not exist'}); return; } var country = req.query.country; var city = req.query.city; var arrivalDate = req.query.arrivalDate === undefined ? moment().add('months', 1).format('YYYY-MM-DD') : req.query.arrivalDate; var departureDate = req.query.departureDate === undefined ? moment().add('months', 1).add('days', 7).format('YYYY-MM-DD') : req.query.departureDate; var s = squel.select({ numberedParameters: true }); s = s.field('region_range_averages.region_id').field('region_range_averages.average').field('city_region_items.coordinates'); s = s.from('region_range_averages').join('city_region_items', null, 'region_range_averages.region_id = city_region_items.region_id'); s = s.where('city_region_items.country = ?', country).where('city_region_items.city = ?', city).where('region_range_averages.check_in_date = ?', arrivalDate).where('region_range_averages.check_out_date = ?', departureDate); query = s.toParam(); pg.connect(conString, function(err, client, done) { client.query(query.text, query.values, function(err, result) { done(); res.json(200, {'result': result === undefined ? [] : result.rows}); }) }); });
request(url, function(err, response, body) { var data, location, queryString; if (err) { throw err; } if (response.statusCode === 200) { data = JSON.parse(body); if (data.status === 0) { var location = data.result.location; queryString = 'insert into t_user_profile (uid, min_price, max_price, city, geom) values (1, 1000, 2000, 021, ST_GeomFromText(\'POINT('+ location.lng + ' ' + location.lat + ')\', 26910));'; pg.connect(conString, function(err, client, done) { if (err) { throw err; } client.query(queryString, function(err, results) { if (err) { throw err; } console.log(results.rows); }); }); } } });
exports.create = function(req, res) { // TODO: user/account creation var username = req.body.username; var password = req.body.passwordOne; if(( username === undefined)||( username =='')||(password === undefined)||( password == '')) { res.render('create', { title: 'Create Account', err: ''} ); }else { console.log("Creating users if not found"); pg.connect(connection, function (err, client) { if (err) throw err; var query = client.query('SELECT * FROM users WHERE username = $1', [username], function(err, result){ if(err) throw err; else if(result.rows.length != 0) { console.log("Username already exist"); found = true; res.render('create', { title: 'Create Account', err: 'Username already exist!'} ); }else { console.log("Username created"); client.query('INSERT INTO users(username, password) values($1, $2);', [username, password]); res.render('login', { title: 'Login to Leftoverz Project', confirm: 'User Account Created Successfully',err: ''}); } }); }); } };
app.get('/memory/get/timeline/:userid', function(req, res){ //parse userid from json object var userid = req.params.userid; //TODO check if userid is authenticated for this request. if(userid == undefined){res.status(400).send("Bad Request. No userID provided."); return;} pg.connect(connectionString, function (err, client, done) { var getTimelineQuery = client.query("SELECT * FROM memory WHERE userid = $1 ORDER BY creationDate DESC;", [userid]); var timeline = []; //storage for each row that we retrieve from DB. console.log("inside request"); //Manage events that this query could cause. getTimelineQuery.on('error', function(error){ console.log("DB error:"+error); res.send("DB error. Something broke in the database rectifier."); client.end(); }); getTimelineQuery.on('row', function(row){ timeline.push(row); //add to the memory array. }); getTimelineQuery.on('end', function(row){ res.send(timeline); //blast it over to the client. client.end(); //close DB connection. }); }); });
router.post('/register', function (req,res,next) { console.log("Trying to log in"); var NAME = req.body.realname; var USERNAME = req.body.user; var PASSWORD = req.body.pass; console.log(USERNAME + " " + PASSWORD); var client = new pg.Client(database); pg.connect(database,function(err,client,done){ if(err) { return console.error('could not connect to postgres', err); } console.log('Connected to database'); var query = ("INSERT INTO Users (Username, RealName, Password) VALUES ($1, $2, $3)"); client.query(query,[USERNAME, NAME, PASSWORD], function(error, result){ console.log(result); console.log(error); if(error) { console.error('Query failed'); console.error(error); return; } else{ res.send(true); return; } }) }) });
db.connect((err) => { if (err) throw err pg.connect(POSTGRES_URL, (err, client) => { db = client; server.listen(port, () => { console.log(`wyvern running on ${port}`); }); }); ws.on('connection', socket => { console.log('socket connected', socket.id) // Whenever a user connects to the database, get all the chats. db.query('SELECT * FROM chatlog', (err, result) => { if (err) throw err; socket.emit('receiveChat', result.rows); }); // Execute this once the client sends their message. chat becomes msg. socket.on('sendChat', msg => { console.log(msg); db.query(`INSERT INTO chatlog (username, message) VALUES ('${msg.username}', '${msg.message}')`, (err, result) => { if (err) throw err; // Broadcast emits to all but this socket. socket.broadcast.emit('receiveChat', [msg]); }); }); }); });
isTokenValid(req.body.token, function(resp){ if(resp.error){ res.status(401).send("Authentication required: "+ resp.error); return; } else { console.log("body contents: " + JSON.stringify(req.body)); //debug // Grab elements from body JSON object. title = req.body.title; text = req.body.text; userid = req.body.userid; image = req.body.image; emotion = req.body.emotion; tagid = req.body.tagid; hashtags = req.body.hashtags; textSad = req.body.textSad; circleColor = req.body.circleColor; video = req.body.video; // Basic sanity checking. Is this even going to work? if( title == undefined || text == undefined || userid == undefined || image == undefined || emotion == undefined || tagid == undefined ){ res.status(400).send("Bad request. Some parameter not defined or missing. I recieved this body:" + req.body); return; } //Connect to database. pg.connect(connectionString, function (err, client, done) { console.log("DB Connected with port: " + port); // SQL parameterized query to insert entry. query = client.query('INSERT INTO memory (title, text, userID, image, emotion, tagID, hashtags, textSad, circleColor) '+ 'VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) '+ 'RETURNING memoryid, title, text, userID, image, emotion, tagID;', [title, text, userid, image, emotion, tagid, hashtags, textSad, circleColor]); var results = []; //stores results.. in this case should just be one. //handle database events. errors first. query.on('error', function (errorMsg) { console.log("Debug: database error:" + errorMsg); res.status(400).send({"error": "database error"}); client.end(); }); // Stream results back one row at a time query.on('row', function (resultRow) { console.log("Debug: (/memory/store) returning obejct: " + resultRow); results.push(resultRow); }); // After all data is returned, close connection and return results query.on('end', function () { client.end(); res.status(200).send(results); }); // Handle Errors - by console display if (err) { console.log(err); } }); } });
router.post('/login', function (req,res,next) { console.log("Trying to log in"); var USERNAME = req.body.user; var PASSWORD = req.body.pass; userName = req.body.user; var fail = "Failed to login. Please try again."; console.log(fail); console.log(USERNAME + " " + PASSWORD); var client = new pg.Client(database); pg.connect(database,function(err,client,done){ if(err) { return console.error('could not connect to postgres', err); } console.log('Connected to database'); var query = "SELECT * FROM Users WHERE username='******' AND password='******';".replace("%NAME%", USERNAME).replace("%PASSWORD%", PASSWORD); client.query(query, function(error, result){ if(error) { console.error('Query failed'); console.error(error); return; } else if (result.rowCount === 0){ res.render('login', { title: 'Login', username: userName, failed: fail }); return; } else { res.render('index', { title: 'Home', username: userName }); console.log("Query success"); return; } }) }) });
app.get('/memory/get/homepage/:userid/:happyOrSad/:count/:token', function(req, res){ //token check...? var token = req.params.token; //parse userid from json object var userid = req.params.userid; var happyOrSad = req.params.happyOrSad; var memCount = req.params.count; if(happyOrSad == "happy") {happyOrSad = 1;} if(happyOrSad == "sad") {happyOrSad = 0;} //TODO check if userid is authenticated for this request. if(userid == undefined){res.status(400).send("Bad Request. No userID provided."); return;} pg.connect(connectionString, function (err, client, done) { var getTimelineQuery = client.query( "SELECT * FROM memory WHERE userid=$1 AND circlecolor=$2 ORDER BY creationDate DESC LIMIT $3;", [userid, happyOrSad, memCount]); var timeline = []; //storage for each row that we retrieve from DB. console.log("inside request"); //Manage events that this query could cause. getTimelineQuery.on('error', function(error){ console.log("DB error:"+error); res.send("DB error. Something broke in the database rectifier."); client.end(); }); getTimelineQuery.on('row', function(row){ timeline.push(row); //add to the memory array. }); getTimelineQuery.on('end', function(row){ res.send(timeline); //blast it over to the client. client.end(); //close DB connection. }); }); });
isTokenValid(token, function(resp){ if(resp.error){ //send feedback if auth needed. res.status(401).send("Authentication required: "+ resp.error); return; } else { var userid = req.params.userid; if(userid == undefined){res.status(400).send("Bad Request. No userID provided."); return;} pg.connect(connectionString, function (err, client, done) { console.log("Doing a search for user:"******" with search string: " + req.params.searchstr); var getTimelineQuery = client.query( "SELECT * FROM memory WHERE userid=$1 AND hashtags ILIKE $2 ORDER BY creationDate DESC;", [userid, "%" + req.params.searchstr.split("?")[0] + "%"]); //percentage is part of the postgres wildcards regex. var timeline = []; //storage for each row that we retrieve from DB. console.log("inside request"); //Manage events that this query could cause. getTimelineQuery.on('error', function(error){ console.log("DB error:"+error); res.send("DB error. Something broke in the database rectum."); client.end(); }); getTimelineQuery.on('row', function(row){ timeline.push(row); //add to the memory array. }); getTimelineQuery.on('end', function(row){ res.send(timeline); //blast it over to the client. client.end(); //close DB connection. }); }); } });
app.get('/memory/get/timeline/:userid/:token', function(req, res){ //TODO check if userid matches token. //parse userid from json object var userid = req.params.userid; var token = req.params.token; //Lazy loading stuff handle start id. Only returns higher than this ID. //These come from after the URL e.g. ?start=date //Its used to only return memories with a higher ID than this one. var startID = 95151; //default to starting with highest id possible. //this limits scalability. if(req.query.start != undefined){ startID = req.query.start; //if the request wants we can start higher. } if(userid == undefined){res.status(400).send("Bad Request. No userID provided."); return;} pg.connect(connectionString, function (err, client, done) { console.log("DB Connected with port: " + port); var getTimelineQuery = client.query("SELECT * FROM memory WHERE userid=$1 AND memoryid < $2 ORDER BY creationDate DESC LIMIT 10;", [userid, startID]); var timeline = []; //storage for each row that we retrieve from DB. console.log("inside request"); //Manage events that this query could cause. getTimelineQuery.on('error', function(error){ console.log("DB error:"+error); res.send("DB error. Something broke in the database rectifier."); client.end(); }); getTimelineQuery.on('row', function(row){ timeline.push(row); //add to the memory array. }); getTimelineQuery.on('end', function(row){ res.send(timeline); //blast it over to the client. client.end(); //close DB connection. }); }); });
isTokenValid(req.params.token, function(resp){ if(resp.error){ res.status(401).send("Authentication required: "+ resp.error); return; } else { console.log(resp); //Connect to database pg.connect(connectionString, function (err, client, done) { console.log("DB Connected with port: " + port); //Perform query to database. Fields to return specified here, and id specified in URL. query = client.query('SELECT memoryid, title, text, textSad, userid, image, emotion, tagid, hashtags, circleColor, creationDate FROM memory WHERE memoryid=$1', [req.params.id]); var results = []; //stores results.. in this case should just be one or none. //for each row add to the results array (above). query.on('row', function(result){ console.log("Debug: (/memory/get/:id) returning obejct: " + result); if (!result) { //If there is no result then send back an error message. res.status(404).send('No data found'); // 404 NOT FOUND } else { results.push(result); //add to array. } }); query.on('end', function() { client.end(); //close DB connection. res.send(results); //finally at the end of the query send all the results. }); if (err) { console.log(err); } }); } });
app.get('/nextlinktocrawl', function(req,res){ res.setHeader('Content-Type', 'json'); pg.connect(DATABASE_URL, function(err, client){ if (err) throw err; var query = client.query("SELECT domain FROM linktimetable WHERE age(localtimestamp, lastcrawled) >= interval '1 minute';", function(err, result){ if (err){ console.log(err); } if (result.rows.length == 0){ res.end(JSON.stringify({"Error" : "All links are in the 1 minute cooldown period, or there are no links."})); } var links = new Array(); for (var i=0; i<result.rows.length; i++){ links.push(result.rows[i]['domain']) } domain = links[Math.floor(Math.random()*links.length)]; var query = client.query('SELECT * FROM linkstocrawl WHERE domain=\''+domain+'\';', function(err, result){ if (err){ console.log(err); } if (result.rows.length == 0){ res.end(JSON.stringify({"Error" : "No links found for the desired domain."})); } var urls = new Array(); for (var i=0; i<result.rows.length; i++){ urls.push(result.rows[i]['fullurl']); } res.end(JSON.stringify({"Link" : urls[Math.floor(Math.random()*urls.length)]})); }); }); }); });
router.get('/', function(req,res){ var client = new pg.Client(database); var users = []; username = localStorage.getItem("username"); pg.connect(database,function(err,client,done){ if(err) { return console.error('could not connect to postgres', err); } console.log('Connected to database'); var query = "SELECT * FROM USERS WHERE username = '******';".replace("%NAME%", username); console.log("Username is: " + username); client.query(query, function(error, result){ if(error) { console.error('Query failed'); console.error(error); return; } for (var i = 0; i < result.rows.length; i++) { var user = { username: result.rows[i].username, realname: result.rows[i].realname, email: result.rows[i].email, address: result.rows[i].address }; users.push(user); } console.log(users); res.render('accountDetails', { title: 'My Account', users: users, username: username }); }) }) });
self.exists = function(id){ var deferred = Q.defer(); pg.connect(dbConnectionString, function(err, client, done) { if(err) { return console.error('error fetching client from pool', err); } var QUERY = 'SELECT * from users_working WHERE "user"->>\'user_id\' = \'' + id + '\''; client.query(QUERY, function(err, result) { done(); if(err) { console.error('error running query', err); deferred.reject(); return; } var exists = result.rows.length > 0; deferred.resolve(exists); }); }); return deferred.promise; };
helper.runInTransaction(agent, function transactionInScope(tx) { var transaction = agent.getTransaction(); t.ok(transaction, "transaction should be visible"); t.equal(tx, transaction, 'We got the same transaction'); var colVal = 'World!'; var pkVal = 222; var insQuery = 'INSERT INTO ' + TABLE + ' (' + PK + ',' + COL; insQuery += ') VALUES(' + pkVal + ",'" + colVal + "');" ; pg.connect(CON_STRING, function(error, clientPool, done) { if (error) return t.fail (error); clientPool.query(insQuery, function (error, ok) { if (error) return t.fail(error); t.ok(agent.getTransaction(), "transaction should still be visible"); t.ok(ok, "everything should be peachy after setting"); var selQuery = 'SELECT * FROM ' + TABLE + ' WHERE '; selQuery += PK + "=" + pkVal + ";"; clientPool.query(selQuery, function (error, value) { if (error) return t.fail(error); t.ok(agent.getTransaction(), "transaction should still still be visible"); t.equals(value.rows[0][COL], colVal, "Postgres client should still work"); transaction.end(); setImmediate(function() { var trace = transaction.getTrace(); t.ok(trace, "trace should exist"); t.ok(trace.root, "root element should exist"); t.equals(trace.root.children.length, 1, "there should be only one child of the root"); var setSegment = trace.root.children[0]; t.equals(setSegment.host, params.postgres_host, "should register the host"); t.equals(setSegment.port, params.postgres_port, "should register the correct port"); t.ok(setSegment, "trace segment for insert should exist"); t.equals(setSegment.name, "Datastore/operation/Postgres/query", "should register the query call"); t.equals(setSegment.children.length, 1, "set should have an only child"); var getSegment = setSegment.children[0]; t.ok(getSegment, "trace segment for get should exist"); t.equals(getSegment.name, "Datastore/operation/Postgres/query", "should register the query call"); t.equals(getSegment.children.length, 0, "get should leave us here at the end"); t.ok(!getSegment.timer.isActive(), "trace segment has ended"); t.end(); done(); }); }); }); }); });
function(username, password, done) { pg.connect(process.env.DATABASE_URL, function(err, client, next) { if (err) { return console.error("Unable to connect to database"); } console.log("Connected to database"); client.query('SELECT * FROM users WHERE username = $1', [username], function(err, result) { // Release client back to pool next(); if (err) { console.log("Database error"); return done(err); } if (result.rows.length > 0) { var matched = bcrypt.compareSync(password, result.rows[0].password); if (matched) { console.log("Successful login"); return done(null, result.rows[0]); } } console.log("Bad username or password"); return done(null, false, {message: 'Bad username or password'}); }); }); })
router.get('/votes-required', function(req, res, next) { pg.connect(global.databaseURI, function(err, client, done) { if(err){ console.error('Could not connect to the database'); console.error(err); return; } var QUERY = "SELECT value FROM site_parameters WHERE parameter='VOTES_REQUIRED';"; console.log(QUERY); client.query(QUERY, function(error, result){ done(); if (error){ console.log(error); } res.send(result.rows[0]); console.log(result); }); done(); }); });
router.post('/signup', function(req, res, next) { if (!validUsername(req.body.username)) { return res.render('examSignup', { invalid: "true" }); } // Local database users: // pg.connect(process.env.DATABASE_URL, connectDB(req,res,next)); pg.connect(process.env.DATABASE_URL + "?ssl=true", connectDB(req,res,next)); });
function setSong(song, roomname){ pg.connect(connection, function (err, client) { if (err) { throw err; } client.query('UPDATE musicrooms SET current_song = $1 WHERE chatroom_name = $2;', [song, roomname]); }); }