Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
# Use Node.js configuration.
language: node_js

node_js:
- 0.6
- 0.8
- 10
- 12
- node # latest

os:
- linux
- osx
- windows

1 change: 1 addition & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ module.exports = function (version, opts) {
if(!isObject(opts)) throw new Error('flumeview-query: expected opts as second arg')
return function (log, name) {
if(!log.filename) return require('./memory')(log, name)

var _view = Indexes(version, opts)(log, name)
var view = Inject(log, _view.indexes())

Expand Down
1 change: 0 additions & 1 deletion indexes.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ function clone (obj) {
return o
}


module.exports = function (version, opts) {
var filter = opts.filter || function () { return true }
var map = opts.map || function (item) { return item }
Expand Down
41 changes: 17 additions & 24 deletions inject.js
Original file line number Diff line number Diff line change
@@ -1,42 +1,35 @@
'use strict'
var pull = require('pull-stream')
// var pull = require('pull-stream')
var Explain = require('./explain')
var Filter = require('./filter')

var isArray = Array.isArray
function isFunction (f) { return 'function' == typeof f }

function clone (obj) {
var o = {}
for(var k in obj)
o[k] = obj[k]
return o
}

//sorted index.

//split this into TWO modules. flumeview-links and flumeview-query
module.exports = function (log, indexes) {
if(!Array.isArray(indexes)) throw new Error('indexes should be an array')
//answer this query by reading the entire log.
//not efficient, but still returns the correct answer
function fullScan (log, opts) {
return log.stream({
values: true, seqs: false,
//TODO test coverage for live/old - the tests arn't right for live when the log starts as empty
old: (opts.old !== false),
live: (opts.live === true || opts.old === false),
reverse: opts.reverse
})
}
// function fullScan (log, opts) {
// return log.stream({
// values: true, seqs: false,
// //TODO test coverage for live/old - the tests arn't right for live when the log starts as empty
// old: (opts.old !== false),
// live: (opts.live === true || opts.old === false),
// reverse: opts.reverse
// })
// }

function createFilter(source, opts) {
return pull(
source,
isArray(opts.query) ? mfr(opts.query) : pull.through(),
opts.limit && pull.take(opts.limit)
)
}
// function createFilter(source, opts) {
// return pull(
// source,
// isArray(opts.query) ? mfr(opts.query) : pull.through(),
// opts.limit && pull.take(opts.limit)
// )
// }
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

both unused fns


var view
return view = {
Expand Down
13 changes: 8 additions & 5 deletions memory.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
var pull = require('pull-stream')
var Filter = require('./filter')

module.exports = function createMemoryIndex (log, name) {
module.exports = function createMemoryIndex (log, name) {
function fullScan (log, opts) {
return log.stream({
values: true, seqs: false,
values: true,
seqs: false,
//TODO test coverage for live/old - the tests arn't right for live when the log starts as empty
old: (opts.old !== false),
live: (opts.live === true || opts.old === false),
Expand All @@ -13,13 +14,15 @@ module.exports = function createMemoryIndex (log, name) {
}

console.error('flumeview-query:', name, 'in memory log or no indexes defined, will always use full scan, queries will likely be slow')
return {
return {
since: log.since,
get: log.get,
methods: { get: 'async', read: 'source'},
methods: { get: 'async', read: 'source' },
read: function (opts) {
return Filter(fullScan(log, opts), opts)
},
createSink: function (cb) {return pull.onEnd(cb) }
createSink: function (cb) {return pull.onEnd(cb) },
close: done => done(),
destroy: done => done()
}
}
Loading