PDatabase.prototype._findSome = function(collection, filter, limit, callback) { var qs = ''; qs += 'SELECT '; if (limit !== -1) { qs += ' ARRAY_AGG(META().id) AS ids, ' } qs += 'COUNT(*) AS cnt FROM default d '; qs += this._buildWhere(collection, filter); if (limit !== -1 && limit > 0) { qs += ' LIMIT ' + limit + ' '; } console.log('Executing Query', qs); var q = couchbase.N1qlQuery.fromString(qs); if (this.config.consistency.enabled) { q.consistency(couchbase.N1qlQuery.Consistency.REQUEST_PLUS); } this.bucket.query(q, function(err, rows) { if (err) { callback(err, null, null); return; } if (rows.length != 1) { callback(new Error('wat?'), null, null); return; } var matchedCount = rows[0].cnt; var ids = rows[0].ids; callback(null, ids ? ids : [], matchedCount); }); };
_runN1ql: function (query, params, callback) { const n1ql = couchbase.N1qlQuery.fromString(query); if (!this.active) { return callback('No active bucket'); } const self = this; if (this.internals.dryRun) { log.info('runN1ql dry run', { query, params }); return Promise.resolve(true).nodeify(callback); } return new Promise((resolve, reject) => { return self.active.query(n1ql, params, (err, rows, meta) => { if (err) { log.error('n1ql error', { err }); return reject(err); } log.info('Successfully ran query'); return resolve({ rows, meta }); }); }).nodeify(callback); },
var getAppSubscriptions = function (msg, api_key) { var meta = { limit : 50, offset : 0 }; var n1ql = squel.select(); n1ql.from("objects") .field('`@id` as id') .field('`@data`') .limit(meta.limit) .offset(meta.offset); n1ql.where('`@data`.client_id = `' + api_key + '`'); n1ql = couchbase.N1qlQuery.fromString(n1ql.toString()); bucket.query(n1ql, [], function(err, res) { if (err) { console.log("Error running N1QL Query for PEAT Subscriptions: " + err); } else { senderToSubscription.send({ 'type' : 'appSubs', 'result' : res, 'token' : msg.token }); } }); };
app.post("/api/stat/doquery", function(req, res) { var para = req.body.qqq; console.log(para); var query = n1q.fromString(para); bucket.query(query, function(err, ress) { console.log(ress.value); res.json(ress.value); }); });
app.post('/addLoginTime', function(req, res) { var addTime = N1qlQuery.fromString("UPDATE loginData SET loginTimes=ARRAY_PREPEND(\"" + req.body.currentTime + "\", loginTimes) WHERE email=\"" + req.body.email + "\""); console.log(addTime); bucket.query(addTime, function(err, result) { if(err) { console.log(err); } res.json(result); }); });
app.get('/getUserInfo', function(req, res) { var hobbyQuery = N1qlQuery.fromString("SELECT * FROM loginData WHERE email=\"" + req.query.email + "\""); console.log(hobbyQuery); bucket.query(hobbyQuery, function (err, result) { if (err) { console.log(err); } res.json(result); }); });
Session.findUser = function (sessionID, callback) { var findUser = N1qlQuery.fromString('SELECT userID FROM `'+userBucketName+'` WHERE sessionID=$1 AND type=\"session\"'); userBucket.query(findUser,[sessionID], function (error, result) { if(error) { callback(error, null); } console.log(result[0]); callback(null, result[0].userID); }) };
app.post('/addUser', function(req, res) { console.log("hello"); console.log(req.body); var primIndex=N1qlQuery.fromString("CREATE PRIMARY INDEX ON loginData"); bucket.query(primIndex, function(err, result) { if (err) { console.log("Index already made on loginData, OK"); } console.log(result); }); var makelog=N1qlQuery.fromString("INSERT INTO loginData (KEY, VALUE) VALUES (\"" + req.body.uuid + "\"," + JSON.stringify(req.body) + ")"); console.log(makelog); bucket.query(makelog, function(err, result) { if (err) { console.log(err); console.log("ERROR ON NODE QUERY"); } res.json(result); }); });
RecordModel.getAll = function(callback) { var statement = "SELECT META(users).id, firstname, lastname, email " + "FROM `" + config.couchbase.bucket + "` AS users"; var query = N1qlQuery.fromString(statement).consistency(N1qlQuery.Consistency.REQUEST_PLUS); db.query(query, function(error, result) { if(error) { return callback(error, null); } callback(null, result); }); };
User.searchByEmail = function (params, callback) { var searchUsers = N1qlQuery.fromString('SELECT login.email FROM `' + userBucketName + '` WHERE LOWER(login.email) LIKE LOWER($1)'); console.log("searchByEmail: " + searchUsers); userBucket.query(searchUsers, [params.email], function (err, result) { if (err) { callback(err, null); return; } callback(null, result); }); };
RecordModel.getByDocumentId = function(documentId, callback) { var statement = "SELECT firstname, lastname, email " + "FROM `" + config.couchbase.bucket + "` AS users " + "WHERE META(users).id = $1"; var query = N1qlQuery.fromString(statement); db.query(query, [documentId], function(error, result) { if(error) { return callback(error, null); } callback(null, result); }); };
addIndex: function (indexName, columns, unique, callback) { log.info('Add Index', { indexName, columns, unique }); const cols = columns.map(c => `\`${c}\``).join(', '); const n1ql = couchbase.N1qlQuery.fromString(`CREATE INDEX ${indexName} on ${this.active._name} ( ${cols} ) using GSI`); this.active.query(n1ql, (err, res) => { console.log(`addIndex: ${err} res ${JSON.stringify(res)}`); return callback(err, res); }); },
getDbLazy("users", function(db){ var devQuery = 'SELECT username as developer, cloudlet as cloudlet FROM users where ' + 'cloudlet in ["' + c_ids.join('", "') + '"]'; var query = couchbase.N1qlQuery.fromString(devQuery); db.query(query, function(err, dev_result) { //console.log("result", JSON.stringify(client_result, null, 2)) //console.log("result", JSON.stringify(dev_result, null, 2)) //console.log("result", JSON.stringify(obj, null, 2)) //console.log("result >>> ", dev_result) //console.log("perms >>> ", perms) var meta = [ { key : "Create by Developer:", value : getDevName(perms.created_by, dev_result)}, { key : "Create in Application:", value : getAppName(perms.created_by_app, client_result)}, { key : "Create Date:", value : dateToHRF(obj._date_created)}, { key : "Last Modified:", value : dateToHRF(obj._date_modified)} ] for (var i in client_result){ var c = client_result[i] if (c.isSE){ var index = app_ids.indexOf(c.id) delete app_ids[index] } } var perms_data = [] for (var i in app_ids){ var appId = app_ids[i] perms_data.push({ key : getAppName(appId, client_result), value : getAppPermsStr(appId, perms), cid : getAppCloudlet(appId, client_result), id : appId }) } res.setHeader('Content-Type', 'application/json'); res.end(JSON.stringify({ "obj" : obj, "perms" : perms_data, "meta" : meta })); }) })
User.addLoginTime = function(userID, callback) { var currentTime = new Date().toISOString(); var addLoginTime = N1qlQuery.fromString("UPDATE `" + userBucketName + "` USE KEYS($2) SET timeTracker.loginTimes=ARRAY_PREPEND($1, timeTracker.loginTimes)"); console.log("addLoginTime: " + addLoginTime); userBucket.query(addLoginTime, [currentTime, userID], function (err, result) { if (err) { console.log(err); callback(err, null); return; } callback(null, {message: "success", data: result}); }); };
var bucket = cluster.openBucket('beer-sample', function(err) { if (err) { // Failed to make a connection to the Couchbase cluster. console.log(err); } // Retrieve a document var n1ql=N1qlQuery.fromString('SELECT * FROM `beer-sample` WHERE brewery_id ="alesmith_brewing" AND name="Wee Heavy"'); bucket.query(n1ql, function(err, result) { if (err) { // Failed to retrieve key console.log(err); } /*bucket.get('aass_brewery-juleol', function(err, result) { if (err) { // Failed to retrieve key throw err; } */ var doc = result; console.log(doc); // console.log(doc.brewery_id + ', ABV: ' + doc.abv); // Store a document // doc.comment = "Random beer from Norway"; var n1qlins=N1qlQuery.fromString('INSERT INTO `beer-sample` (KEY, VALUE) VALUES(\"pranavsbeer\", {\"brewery_id\": \"pranavs_famous_brewery\"})'); bucket.query(n1qlins, function(err, result) { if (err) { // Failed to retrieve key console.log(err); } /* bucket.replace('aass_brewery-juleol', doc, function(err, result) { if (err) { // Failed to replace key throw err; } */ console.log(result); // Success! process.exit(0); }); }); });
self.runNickelQuery = function(query, bucket, callback) { var queryCode = 'SELECT META().id AS docId, ' + 'META().cas AS casValue ' + 'FROM ' + bucket + ' ' + 'WHERE ' + query; var nickelQuery = couchbase.N1qlQuery.fromString(queryCode); var start = new Date().getTime(); self.bucket.query(nickelQuery, function (error, result) { console.log('Executing N1QL: ' + queryCode); if (error) { console.log('N1QL - ' + error); } var end = new Date().getTime(); console.log("finished query. elapsed time: " + (end - start) + " ms."); callback(error, result); }); };
app.get('/emailAvailable', function(req, res) { var checkEmailAddress=N1qlQuery.fromString("SELECT COUNT(*) AS numEmails FROM loginData WHERE email=\"" + req.query.email + "\""); console.log(checkEmailAddress); bucket.query(checkEmailAddress, function (err, result) { if (err) { console.log(err); } /*else { if (result.numEmails==0) { res.send("The username and password combination you entered does not exist."); } if (result.numEmails>0) { res.send("The") } } */ res.json(result); }); });
Session.auth = function (req, res, next) { var sessionID = req.headers.authorization; console.log(sessionID); var sessionArray = sessionID.split(" "); if (sessionArray[0] === "Bearer") { var getSession = N1qlQuery.fromString("SELECT userID FROM `" + userBucketName + "` WHERE type = \"session\" AND sessionID = $1"); userBucket.query(getSession, [sessionArray[1]], function (error, result) { if(error) { callback(error, null); return; } if (!result[0]) { console.log("Session expired, please login again."); res.send("Session expired, please login again."); return; } req.userID = result[0].userID; next(); }); } };
bucket.query(n1ql, function(err, result) { if (err) { // Failed to retrieve key console.log(err); } /*bucket.get('aass_brewery-juleol', function(err, result) { if (err) { // Failed to retrieve key throw err; } */ var doc = result; console.log(doc); // console.log(doc.brewery_id + ', ABV: ' + doc.abv); // Store a document // doc.comment = "Random beer from Norway"; var n1qlins=N1qlQuery.fromString('INSERT INTO `beer-sample` (KEY, VALUE) VALUES(\"pranavsbeer\", {\"brewery_id\": \"pranavs_famous_brewery\"})'); bucket.query(n1qlins, function(err, result) { if (err) { // Failed to retrieve key console.log(err); } /* bucket.replace('aass_brewery-juleol', doc, function(err, result) { if (err) { // Failed to replace key throw err; } */ console.log(result); // Success! process.exit(0); }); });
User.advancedSearch = function(params, callback) { /*var email, name, administrator, hobbies, expertise, division, title, baseOffice, userID; name = administrator = hobbies = expertise = division = title = baseOffice = userID =""; */ var advancedQuery = ('SELECT stringAttributes, arrayAttributes, dropdownAttributes, login, uuid , `'+primaryAttribute+'` '); if (params.loginAuth) { advancedQuery += ', `password` '; } advancedQuery += ('FROM `' + userBucketName + '` WHERE login.type="user" '); /*var stringToArray = function(anyString) { var tempArray=anyString.split(","); var resultArray=[]; for (i=0; i<tempArray.length; i++) { var str = tempArray[i]; resultArray[i]= str.trim(); if (resultArray[i]=="") { resultArray.splice(i, 1); } } return resultArray; }*/ if (params.userID) { advancedQuery += ("AND uuid = \"" + params.userID + "\" "); } if (params.email) { advancedQuery += ("AND LOWER(login.email) LIKE LOWER(\"%" + params.email + "%\") "); } if (params.administrator) { advancedQuery += ("AND login.administrator = true "); } for (i=0; i<stringAttributes.length;i++) { if (params[stringAttributes[i]]) { advancedQuery += ("AND LOWER(stringAttributes.`"+stringAttributes[i]+"`) LIKE LOWER (\"%" + params[stringAttributes[i]] + "%\") "); } } for (j=0; j<arrayAttributes.length; j++) { if (params[arrayAttributes[j]]) { advancedQuery += ("AND ANY blah IN " + userBucketName + ".arrayAttributes.`" + arrayAttributes[j] + "` SATISFIES LOWER(blah) LIKE LOWER(\"%" + params[arrayAttributes[j]] + "%\") END "); } } for (k=0; k<dropdownAttributes.length; k++) { if (params[dropdownAttributes[k]]) { advancedQuery += ("AND dropdownAttributes.`"+dropdownAttributes[k].varname+"` = \"" + params[dropdownAttributes[k].varname] + "\" "); } } if (params[primaryAttribute]) { advancedQuery += ("AND LOWER(`"+primaryAttribute+"`) LIKE LOWER(\"%"+params[primaryAttribute]+"%\") "); } if (params.loginAuth || params.register) { advancedQuery+= ("ORDER BY `"+primaryAttribute+"`"); } else { advancedQuery += ("AND login.emailVerified=true ORDER BY "+primaryAttribute); } var advancedQueryN1ql = N1qlQuery.fromString(advancedQuery); console.log(advancedQueryN1ql); userBucket.query(advancedQueryN1ql, function (error, result) { if (error) { callback(error, null); return; } console.log(result); callback(null, result); }); };
User.intelligentCount = function(params, callback) { /*if (!params.searchTerm) { return callback(null, {status: "error", message: "Please enter a search term."}); }*/ var intelliQuery = ''; var arrayName = ''; for (i=0; i<arrayAttributes.length; i++) { arrayName = arrayAttributes[i]; if (i>0) { intelliQuery += 'UNION ALL '; } if (arrayName) { intelliQuery += ('SELECT COUNT(*) as count, \"'+arrayName+'\" AS field FROM `'+userBucketName+'` where ANY blah IN '+ userBucketName + '.arrayAttributes.`' + arrayName + '` SATISFIES LOWER(blah) LIKE LOWER(\"%'+params.searchTerm+'%\") END AND login.emailVerified=true '); } } var stringName = ''; for (j=0; j<stringAttributes.length; j++) { stringName = stringAttributes[j]; if (j>0 || intelliQuery.length != -1) { intelliQuery += 'UNION ALL '; } if (stringName) { intelliQuery+= ('SELECT COUNT(*) as count, \"'+stringName+'\" AS field FROM `'+userBucketName+'` where LOWER(stringAttributes.`'+stringName+'`) LIKE LOWER(\"%'+params.searchTerm+'%\") AND login.emailVerified=true '); } } var dropdownName = ''; for (k=0; k<dropdownAttributes.length; k++) { dropdownName = dropdownAttributes[k].varname; if (k>0 || intelliQuery.length != -1) { intelliQuery += 'UNION ALL '; } if (dropdownName) { intelliQuery+= ('SELECT COUNT(*) as count, \"'+dropdownName+'\" AS field FROM `'+userBucketName+'` where dropdownAttributes.`'+dropdownName+'` = \"'+params.searchTerm+'\" AND login.emailVerified=true '); } } intelliQuery += ('UNION ALL SELECT COUNT(*) AS count, \"'+primaryAttribute+'\" AS field FROM `'+userBucketName+'` WHERE LOWER(`'+primaryAttribute+'`) LIKE LOWER(\"%'+params.searchTerm+'%\") AND login.emailVerified=true '); intelliQuery += ('UNION ALL SELECT COUNT(*) AS count, \"email\" AS field FROM `'+userBucketName+'` WHERE LOWER(login.email) LIKE LOWER(\"%'+params.searchTerm+'%\") AND login.emailVerified=true '); intelliQuery += ' ORDER BY count DESC, field'; var intelliQueryN1ql = N1qlQuery.fromString(intelliQuery); console.log(intelliQueryN1ql); userBucket.query(intelliQueryN1ql, function(error, result) { if(error) { callback(error, null); return; } var refinedArray = []; for (z=0; z<result.length; z++) { if (result[z].count > 0) { refinedArray.push(result[z]); } } if (refinedArray.length === 0) { refinedArray[0] = {"field": "Sorry, there are no results for your search."}; } console.log('result: ' + result); console.log('refinedArray: ' + refinedArray); callback(null, refinedArray); }); // want to loop through each type of array, and go through all array elements and string elements // for each type of text/array field, you will want to loop through to find all instances of it // you will then do a query like SELECT COUNT(*) FROM userBucketName WHERE (textfield/array loop) // then ouput the field name and count type in order of descending count /*else if (type == 'intelligent') { // could put in a loop for each one so that people can verify each type with a count (set up an array) var intelligentQuery = N1qlQuery.fromString("SELECT COUNT(*) FROM " + userBucketName + " " + email + " " + name + " " + administrator + " " + hobbies + " " + expertise + " " + division + " " + title + " " + baseOffice); console.log(intelligentQuery); userBucket.query(intelligentQuery, function (error, result) { if (error) { callback(error, null); return; } console.log(result); callback(null, {message: "success", data: result}); }); } */ };
User.create = function(params, callback) { var currentTime = new Date().toISOString(); console.log('params: ' + params); var stringToArray = function(anyString) { if (typeof anyString === "undefined" || !anyString) { return ""; } else { var tempArray=anyString.split(","); var resultArray=[]; for (i=0; i<tempArray.length; i++) { var str = tempArray[i]; resultArray[i]= str.trim(); if (resultArray[i]=="") { resultArray.splice(i, 1); } } return resultArray; } }; if (!params.arrayAttributes) { params.arrayAttributes = {}; } if (!params.dropdownAttributes) { params.dropdownAttributes = {}; } if (!params.stringAttributes) { params.stringAttributes = {}; } var userDoc = { // should add a type here, ex. type: "user" uuid: uuid.v4(), password: forge.md.sha1.create().update(params.login.password).digest().toHex(), stringAttributes: {}, arrayAttributes: {}, dropdownAttributes: {}, login: { type: "user", email: params.login.email, administrator: false, hasPicture: false, emailVerified: false }, timeTracker: { registerTime: currentTime, updateTimes: [], loginTimes: [currentTime] } }; for (i=0; i<stringAttributes.length; i++) { userDoc.stringAttributes[stringAttributes[i]] = params.stringAttributes[stringAttributes[i]]; } for (j=0; j<arrayAttributes.length; j++) { userDoc.arrayAttributes[arrayAttributes[j]] = stringToArray(params.arrayAttributes[arrayAttributes[j]]); } for (k=0; k<dropdownAttributes.length; k++) { userDoc.dropdownAttributes[dropdownAttributes[k].varname] = params.dropdownAttributes[dropdownAttributes[k].varname]; } userDoc[primaryAttribute] = params[primaryAttribute]; console.log(userDoc); var insertUser = N1qlQuery.fromString('INSERT INTO `' + userBucketName + '` (KEY, VALUE) VALUES ($1, $2)'); console.log(insertUser); userBucket.query(insertUser, [userDoc.uuid, userDoc], function (err, result) { if (err) { console.log("ERROR IN USERMODEL QUERY: "); console.log(err); callback(err, null); return; } callback(null, {message: "success", data: result, userID: userDoc.uuid, userDoc: userDoc}); }); };
var test = function(msg, callback) { var n1ql = squel.select().from("objects") //n1ql.field("`@data` as data") if ( undefined !== msg.json["types"]){ var where = squel.expr() for (var i in msg.json.types){ where.or('`@type`="' + msg.json["types"][i] + '"') } n1ql.where(where); } if ( undefined !== msg.json["fields"]){ for (var i in msg.json.fields){ n1ql.field(msg.json["fields"][i]) } } if ( undefined !== msg.json["where"]){ for (var i in msg.json.where){ n1ql.where(msg.json["where"][i]) } } n1ql.where('`_permissions`.`' + msg.token.cloudlet + '`.`read` = true') console.log(n1ql.toString()); var query = N1qlQuery.fromString(n1ql.toString()); //console.log("query", query) bucket.query(query, function(err, result) { if (err){ callback(null,{'Error: ' : err}) } console.log("err", err); console.log("result", result.length); if (result.length !== 1){ callback({"error" : "Only querys that result in single results allowed. Found: " + result.length }) } else{ var resp = []; console.log("result", result[0]); if ( undefined !== msg.json["fields"]){ for (var i = 0; i < msg.json.fields.length; i++){ resp[i] = {}; resp[i]["field"] = msg.json["fields"][i]; resp[i]["result"] = result[0][ "$" + (i + 1)]; console.log("$ + (i + 1)", "$" + (i + 1)); //where.or('`@type`="' + msg.json["fields"][i] + '"') } } callback(resp) } }); };
getDbLazy("objects", function(db){ var sql = 'SELECT _permissions as perms FROM objects WHERE `@cloudlet` = "' + decoded["cloudlet"] + '" AND `@id` = "' + obj['@id'] + '" LIMIT 1' var query = couchbase.N1qlQuery.fromString(sql); db.query(query, function(err, result) { //console.log("err", err) //console.log("result", JSON.stringify(result, null, 2)) //console.log("sql", sql) //console.log("result", result) var perms = result[0].perms //console.log("perms", perms) var c_ids = [] var app_ids = [] for (var i in perms){ if (0 === i.indexOf("created_by")){ continue; } else if (0 === i.indexOf("c_")){ c_ids.push(i) } else{ app_ids.push(i) } } getDbLazy("clients", function(db){ var clientSQL = 'SELECT api_key as id, isSE, name as name, cloudlet as cloudlet FROM clients' + ' where api_key in ["' + app_ids.join('", "') + '"]'; var query = couchbase.N1qlQuery.fromString(clientSQL); db.query(query, function(err, client_result) { getDbLazy("users", function(db){ var devQuery = 'SELECT username as developer, cloudlet as cloudlet FROM users where ' + 'cloudlet in ["' + c_ids.join('", "') + '"]'; var query = couchbase.N1qlQuery.fromString(devQuery); db.query(query, function(err, dev_result) { //console.log("result", JSON.stringify(client_result, null, 2)) //console.log("result", JSON.stringify(dev_result, null, 2)) //console.log("result", JSON.stringify(obj, null, 2)) //console.log("result >>> ", dev_result) //console.log("perms >>> ", perms) var meta = [ { key : "Create by Developer:", value : getDevName(perms.created_by, dev_result)}, { key : "Create in Application:", value : getAppName(perms.created_by_app, client_result)}, { key : "Create Date:", value : dateToHRF(obj._date_created)}, { key : "Last Modified:", value : dateToHRF(obj._date_modified)} ] for (var i in client_result){ var c = client_result[i] if (c.isSE){ var index = app_ids.indexOf(c.id) delete app_ids[index] } } var perms_data = [] for (var i in app_ids){ var appId = app_ids[i] perms_data.push({ key : getAppName(appId, client_result), value : getAppPermsStr(appId, perms), cid : getAppCloudlet(appId, client_result), id : appId }) } res.setHeader('Content-Type', 'application/json'); res.end(JSON.stringify({ "obj" : obj, "perms" : perms_data, "meta" : meta })); }) }) }) }) }) })
var indexCreator = function(bucketname) { var indexOnUsers = N1qlQuery.fromString("CREATE PRIMARY INDEX ON `" + bucketname + "`"); console.log(indexOnUsers); return indexOnUsers; };
Statistics.newGraph = function (timeUnit, callback) { var graphObj = {}; var dayQuery = N1qlQuery.fromString("SELECT DATE_DIFF_STR(STR_TO_UTC(NOW_STR()), time, \"hour\") AS deltaTime, COUNT(*) AS countTime from "+userBucketName+" UNNEST timeTracker.loginTimes AS time GROUP BY DATE_DIFF_STR(STR_TO_UTC(NOW_STR()), time, \"hour\") HAVING DATE_DIFF_STR(STR_TO_UTC(NOW_STR()), time, \"hour\") < 24 ORDER BY deltaTime"); var weekQuery = N1qlQuery.fromString("SELECT DATE_DIFF_STR(STR_TO_UTC(NOW_STR()), time, \"day\") AS deltaTime, COUNT(*) AS countTime from "+userBucketName+" UNNEST timeTracker.loginTimes AS time GROUP BY DATE_DIFF_STR(STR_TO_UTC(NOW_STR()), time, \"day\") HAVING DATE_DIFF_STR(STR_TO_UTC(NOW_STR()), time, \"day\") < 7 ORDER BY deltaTime"); if (timeUnit === 'day') { userBucket.query(dayQuery, function (error, result) { if (error) { console.log(error); return callback(error, null); } graphObj.logins = Array.apply(null, Array(24)).map(Number.prototype.valueOf,0); graphObj.x = Array.apply(null, Array(24)).map(Number.prototype.valueOf,0); var hoursX = ['12am', '1am', '2am', '3am', '4am', '5am', '6am', '7am', '8am', '9am', '10am', '11am', '12pm', '1pm', '2pm', '3pm', '4pm', '5pm', '6pm', '7pm', '8pm', '9pm', '10pm', '11pm']; var counter = 0; var starter = moment().hour(); console.log(starter); while (counter < 24) { var index = 0; if ((starter-counter) < 0) { index = (starter-counter) + 24; } else { index = starter-counter; } graphObj.x[23-counter] = hoursX[index]; counter++; } for (i=0; i<result.length; i++) { graphObj.logins[23-result[i].deltaTime] = result[i].countTime; } return callback(null, graphObj); }); } else if (timeUnit === 'week') { userBucket.query(weekQuery, function (error, result) { if (error) { console.log(error); return callback(error, null); } graphObj.logins = Array.apply(null, Array(7)).map(Number.prototype.valueOf,0); graphObj.x = Array.apply(null, Array(7)).map(Number.prototype.valueOf,0); var weekX = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; var counter = 0; var starter = moment().day(); while (counter < 7) { var index = 0; if ((starter-counter) < 0) { index = (starter-counter) + 7; } else { index = starter-counter; } graphObj.x[6-counter] = weekX[index]; counter++; } for (i=0; i<result.length; i++) { graphObj.logins[6-result[i].deltaTime] = result[i].countTime; } return callback(null, graphObj); }); } else { return callback('please enter a valid timeUnit', null); } };
User.newUpdate = function (userDoc, callback) { var currentTime = new Date().toISOString(); var stringyArray = function(anyString) { if (typeof anyString.trim() === "undefined") { console.log("anyString: "+anyString); return anyString; } else { var tempArray=anyString.split(","); var resultString = "[ "; var resultArray=[]; for (i=0; i<tempArray.length; i++) { var str = tempArray[i]; resultArray[i]= str.trim(); if (!resultArray[i]) { resultArray.splice(i, 1); } } for (j=0; j<resultArray.length; j++) { if (resultArray[j]) { resultString += "\'"+resultArray[j]+"\'"; if (j < resultArray.length-1) { resultString += ", "; } } } resultString += " ]"; console.log(resultString); console.log(resultArray); return resultString; } }; if (!userDoc.arrayAttributes) { userDoc.arrayAttributes = {}; } if (!userDoc.dropdownAttributes) { userDoc.dropdownAttributes = {}; } if (!userDoc.stringAttributes) { userDoc.stringAttributes = {}; } /*Object.keys(userDoc.arrayAttributes).forEach(function (key) { userDoc.arrayAttributes[key] = stringToArray(userDoc.arrayAttributes[key]); // use val });*/ var updateUser = ('UPDATE `'+userBucketName+'` USE KEYS ($1) SET '); var updateStatements = ""; Object.keys(userDoc.arrayAttributes).forEach(function (key) { updateStatements += ('arrayAttributes.`'+key+'` = '+stringyArray(userDoc.arrayAttributes[key])+', '); // use val }); Object.keys(userDoc.stringAttributes).forEach(function (key) { updateStatements += ('stringAttributes.`'+key+'` = \"'+userDoc.stringAttributes[key]+'\", '); // use val }); Object.keys(userDoc.dropdownAttributes).forEach(function (key) { updateStatements += ('dropdownAttributes.`'+key+'` = \"'+userDoc.dropdownAttributes[key]+'\", '); // use val }); if (updateStatements) { updateStatements = updateStatements.replace(/,\s*$/, ""); updateUser += updateStatements; } else { callback(null, 'no update necessary. no string, array, or dropdownAttributes found'); } updateUser = N1qlQuery.fromString(updateUser); console.log(updateUser); userBucket.query(updateUser, [userDoc.uuid], function (err, result) { if (err) { console.log("ERROR IN USERMODEL QUERY: "); console.log(err); callback(err, null); return; } console.log('userDoc updated: '+ result); callback(null, result); }); };