_.each(criteria.joins, function (join) { //console.log(join.childKey) //console.log(criteria.where) var _id = criteria.where[join.childKey] if (!_id) _id = criteria.where._key //console.log(join) ret += ', "' + join.alias + '" : (FOR ' + join.alias + ' IN ANY ' + aqb.str(join.parent + '/' + _id).toAQL() + ' GRAPH ' + aqb.str(me.graph.name).toAQL() + '' + ' OPTIONS {bfs: true, uniqueVertices: true} FILTER IS_SAME_COLLECTION("' +join.child + '", ' + join.alias + ') RETURN ' + join.alias + ')'; });
_.each(options.where, function (v, k) { if (whereStr !== '') whereStr += ' AND '; switch (k) { case 'id': whereStr += 'd._key == ' + aqb.str(v).toAQL(); break; case '_key': case '_rev': whereStr += 'd.' + k + ' == ' + aqb.str(v).toAQL(); break; default: whereStr += 'd.' + k + ' == ' + aqb(v).toAQL(); break; } });
_query: function (cfg) { if (!db._foxxlog) { return []; } if (!cfg.opts) { cfg.opts = {}; } var query = qb.for('entry').in('_foxxlog'); query = query.filter(qb.eq('entry.mount', qb.str(this._console._mount))); query = query.filter(qb.gte( 'entry.time', exists(cfg.opts.startTime) ? qb.num(cfg.opts.startTime) : Date.now() - this.defaultMaxAge )); if (exists(cfg.opts.endTime)) { query = query.filter(qb.lte('entry.time', qb.num(cfg.opts.endTime))); } if (exists(cfg.opts.level)) { query = query.filter( typeof cfg.opts.level === 'number' ? qb.eq('entry.levelNum', qb.num(cfg.opts.level)) : qb.eq('entry.level', qb.str(cfg.opts.level)) ); } if (exists(cfg.opts.minLevel)) { var levelNum = cfg.opts.minLevel; if (typeof levelNum !== 'number') { if (!this._console._logLevels.hasOwnProperty(levelNum)) { throw new Error('Unknown log level: ' + levelNum); } levelNum = this._console._logLevels[levelNum]; } query = query.filter(qb.gte('entry.levelNum', qb.num(levelNum))); } if (exists(cfg.fileName)) { query = query.filter(qb.LIKE('entry.stack[*].fileName', qb.str('%' + cfg.fileName + '%'), true)); } if (exists(cfg.message)) { query = query.filter(qb.LIKE('entry.message', qb.str('%' + cfg.message + '%'), true)); } query = query.sort('entry.time', 'ASC'); if (exists(cfg.opts.limit)) { if (exists(cfg.opts.offset)) { query = query.limit(cfg.opts.offset, cfg.opts.limit); } else { query = query.limit(cfg.opts.limit); } } query = query.return('entry'); var result = db._query(query).toArray(); if (cfg.opts.sort && cfg.opts.sort.toUpperCase() === 'DESC') { return result.reverse(); } return result; },