Example #1
0
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);
  });
};
Example #2
0
  _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
         });
      }
   });

};
Example #4
0
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);
	});
});
Example #5
0
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);
	});
});
Example #6
0
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);
	});
});
Example #7
0
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);
	})
};
Example #8
0
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);
    });
};
Example #10
0
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);
    });
};
Example #12
0
  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);
    });
  },
Example #13
0
                              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
                                    }));
                                 })
                              })
Example #14
0
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);
     });
 };
Example #17
0
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);
	});
});
Example #18
0
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);
    });
  });
Example #20
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);
    });
};
Example #21
0
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});
        });
    } */
};
Example #22
0
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});
    });
};
Example #23
0
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)
      }
   });

};
Example #24
0
                  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
                                    }));
                                 })
                              })
                           })
                        })
                     })
                  })
Example #25
0
 var indexCreator = function(bucketname) {
     var indexOnUsers = N1qlQuery.fromString("CREATE PRIMARY INDEX ON `" + bucketname + "`");
     console.log(indexOnUsers);
     return indexOnUsers;
 }; 
Example #26
0
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);
    }
};
Example #27
0
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);
    });
};