Skip to content

Commit

Permalink
Add criteria.id to IndexedStore
Browse files Browse the repository at this point in the history
  • Loading branch information
ai committed Jul 31, 2018
1 parent aa55e3a commit c5c2612
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 89 deletions.
116 changes: 69 additions & 47 deletions indexed-store.js
Expand Up @@ -187,54 +187,76 @@ IndexedStore.prototype = {
removeReason: function removeReason (reason, criteria, callback) {
return this.init().then(function (store) {
var log = store.os('log', 'write')
var request = log.index('reasons').openCursor(reason)
return new Promise(function (resolve, reject) {
rejectify(request, reject)
request.onsuccess = function (e) {
if (!e.target.result) {
resolve()
return
}

var entry = e.target.result.value
var meta = entry.meta
var c = criteria

if (isDefined(c.olderThan) && !isFirstOlder(meta, c.olderThan)) {
e.target.result.continue()
return
}
if (isDefined(c.youngerThan) && !isFirstOlder(c.youngerThan, meta)) {
e.target.result.continue()
return
}
if (isDefined(c.minAdded) && entry.added < c.minAdded) {
e.target.result.continue()
return
}
if (isDefined(c.maxAdded) && entry.added > c.maxAdded) {
e.target.result.continue()
return
}

var process
if (entry.reasons.length === 1) {
entry.meta.reasons = []
entry.meta.added = entry.added
callback(entry.action, entry.meta)
process = log.delete(entry.added)
} else {
entry.reasons.splice(entry.reasons.indexOf(reason), 1)
entry.meta.reasons = entry.reasons
process = log.put(entry)
}

rejectify(process, reject)
process.onsuccess = function () {
e.target.result.continue()
if (criteria.id) {
return promisify(log.index('id').get(criteria.id))
.then(function (entry) {
if (!entry) {
return Promise.resolve()
}
var index = entry.meta.reasons.indexOf(reason)
if (index !== -1) {
entry.meta.reasons.splice(index, 1)
entry.reasons = entry.meta.reasons
if (entry.meta.reasons.length === 0) {
callback(entry.action, entry.meta)
return promisify(log.delete(entry.added))
} else {
return promisify(log.put(entry))
}
} else {
return Promise.resolve()
}
})
} else {
var request = log.index('reasons').openCursor(reason)
return new Promise(function (resolve, reject) {
rejectify(request, reject)
request.onsuccess = function (e) {
if (!e.target.result) {
resolve()
return
}

var entry = e.target.result.value
var m = entry.meta
var c = criteria

if (isDefined(c.olderThan) && !isFirstOlder(m, c.olderThan)) {
e.target.result.continue()
return
}
if (isDefined(c.youngerThan) && !isFirstOlder(c.youngerThan, m)) {
e.target.result.continue()
return
}
if (isDefined(c.minAdded) && entry.added < c.minAdded) {
e.target.result.continue()
return
}
if (isDefined(c.maxAdded) && entry.added > c.maxAdded) {
e.target.result.continue()
return
}

var process
if (entry.reasons.length === 1) {
entry.meta.reasons = []
entry.meta.added = entry.added
callback(entry.action, entry.meta)
process = log.delete(entry.added)
} else {
entry.reasons.splice(entry.reasons.indexOf(reason), 1)
entry.meta.reasons = entry.reasons
process = log.put(entry)
}

rejectify(process, reject)
process.onsuccess = function () {
e.target.result.continue()
}
}
}
})
})
}
})
},

Expand Down
54 changes: 12 additions & 42 deletions yarn.lock
Expand Up @@ -3,14 +3,14 @@


"@babel/code-frame@^7.0.0-beta.35":
version "7.0.0-beta.51"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz#bd71d9b192af978df915829d39d4094456439a0c"
version "7.0.0-beta.52"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.52.tgz#192483bfa0d1e467c101571c21029ccb74af2801"
dependencies:
"@babel/highlight" "7.0.0-beta.51"
"@babel/highlight" "7.0.0-beta.52"

"@babel/highlight@7.0.0-beta.51":
version "7.0.0-beta.51"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.51.tgz#e8844ae25a1595ccfd42b89623b4376ca06d225d"
"@babel/highlight@7.0.0-beta.52":
version "7.0.0-beta.52"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.52.tgz#ef24931432f06155e7bc39cdb8a6b37b4a28b3d0"
dependencies:
chalk "^2.0.0"
esutils "^2.0.2"
Expand Down Expand Up @@ -2384,8 +2384,8 @@ flush-write-stream@^1.0.0:
readable-stream "^2.0.4"

follow-redirects@^1.0.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.0.tgz#234f49cf770b7f35b40e790f636ceba0c3a0ab77"
version "1.5.1"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.1.tgz#67a8f14f5a1f67f962c2c46469c79eaec0a90291"
dependencies:
debug "^3.1.0"

Expand Down Expand Up @@ -2699,8 +2699,8 @@ home-or-tmp@^2.0.0:
os-tmpdir "^1.0.1"

hosted-git-info@^2.1.4:
version "2.6.1"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.1.tgz#6e4cee78b01bb849dcf93527708c69fdbee410df"
version "2.7.1"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"

hpack.js@^2.1.6:
version "2.1.6"
Expand Down Expand Up @@ -3941,7 +3941,7 @@ loglevelnext@^1.0.1:

logux-core@logux/logux-core:
version "0.2.2"
resolved "https://codeload.github.com/logux/logux-core/tar.gz/6deaf62b3bea4f2c9ee95c0217fdedbbc670e164"
resolved "https://codeload.github.com/logux/logux-core/tar.gz/4ff44487a92e435eafcc7955640e5d00b7f19324"
dependencies:
nanoevents "^1.0.4"

Expand Down Expand Up @@ -6711,37 +6711,7 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0:
source-list-map "^2.0.0"
source-map "~0.6.1"

webpack@^4.12.0:
version "4.15.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.15.0.tgz#c9704e98f045499b84bdb194d23ade18dfaf4441"
dependencies:
"@webassemblyjs/ast" "1.5.13"
"@webassemblyjs/helper-module-context" "1.5.13"
"@webassemblyjs/wasm-edit" "1.5.13"
"@webassemblyjs/wasm-opt" "1.5.13"
"@webassemblyjs/wasm-parser" "1.5.13"
acorn "^5.6.2"
acorn-dynamic-import "^3.0.0"
ajv "^6.1.0"
ajv-keywords "^3.1.0"
chrome-trace-event "^1.0.0"
enhanced-resolve "^4.1.0"
eslint-scope "^3.7.1"
json-parse-better-errors "^1.0.2"
loader-runner "^2.3.0"
loader-utils "^1.1.0"
memory-fs "~0.4.1"
micromatch "^3.1.8"
mkdirp "~0.5.0"
neo-async "^2.5.0"
node-libs-browser "^2.0.0"
schema-utils "^0.4.4"
tapable "^1.0.0"
uglifyjs-webpack-plugin "^1.2.4"
watchpack "^1.5.0"
webpack-sources "^1.0.1"

webpack@^4.15.1:
webpack@^4.12.0, webpack@^4.15.1:
version "4.15.1"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.15.1.tgz#dc716779a3b88827c369f18c71a6137fa7e582fd"
dependencies:
Expand Down

0 comments on commit c5c2612

Please sign in to comment.