Skip to content

Commit 4627b0e

Browse files
committed
3.0.0-alpha.4
1 parent 8d4f767 commit 4627b0e

9 files changed

+76
-29
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
##### 3.0.0-alpha.4 - 23 February 2016
2+
3+
- Improved find, destroy, and update methods
4+
- Upgraded to [email protected]
5+
16
##### 3.0.0-alpha.3 - 23 February 2016
27

38
- Upgraded dependencies

CONTRIBUTORS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
#
55
# Names should be added to this file as:
66
# [commit count] Name <email address>
7-
60 Jason Dobry <[email protected]>
7+
62 Jason Dobry <[email protected]>

dist/js-data-localstorage.js

Lines changed: 30 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js-data-localstorage.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js-data-localstorage.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js-data-localstorage.min.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

karma.start.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ beforeEach(function () {
44

55
TestRunner.init({
66
debug: false,
7-
features: [],
7+
features: [
8+
'findHasManyLocalKeys',
9+
'findHasManyForeignKeys'
10+
],
811
JSData: JSData,
912
Adapter: LocalStorageAdapter,
1013
adapterConfig: {

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "js-data-localstorage",
33
"description": "localStorage adapter for js-data.",
4-
"version": "3.0.0-alpha.3",
4+
"version": "3.0.0-alpha.4",
55
"homepage": "https://github.com/js-data/js-data-localstorage",
66
"repository": {
77
"type": "git",
@@ -43,6 +43,7 @@
4343
"gzip": "echo gzipped size: $(cat dist/js-data-localstorage.min.js | gzip -f9 | wc -c)kb",
4444
"build": "npm run lint && npm run bundle && npm run min && npm run version && npm run banner",
4545
"karma": "karma start",
46+
"quick": "npm run bundle && npm run karma",
4647
"test": "npm run build && npm run karma",
4748
"release": "npm test && npm run doc && node scripts/authors.js",
4849
"ci": "npm test && cat ./coverage/PhantomJS*/lcov.info | coveralls || true && cat ./coverage/PhantomJS*/lcov.info | codacy-coverage || true"
@@ -60,7 +61,7 @@
6061
"codacy-coverage": "1.1.3",
6162
"coveralls": "2.11.6",
6263
"ink-docstrap": "1.1.2",
63-
"js-data-adapter-tests": "^2.0.0-alpha.5",
64+
"js-data-adapter-tests": "^2.0.0-alpha.6",
6465
"jsdoc": "3.4.0",
6566
"karma": "0.13.21",
6667
"karma-browserstack-launcher": "0.1.10",

src/index.js

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -404,18 +404,24 @@ addHiddenPropsToTarget(LocalStorageAdapter.prototype, {
404404
self.dbg(op, id, opts)
405405
// Destroy the record
406406
// TODO: Destroy related records when the "with" option is provided
407-
self.storage.removeItem(self.getIdPath(mapper, opts, id))
408-
self.removeId(id, mapper, opts)
407+
const key = self.getIdPath(mapper, opts, id)
408+
const recordJson = self.storage.getItem(key)
409+
let deleted = 0
410+
if (recordJson) {
411+
self.storage.removeItem(key)
412+
self.removeId(id, mapper, opts)
413+
deleted++
414+
}
409415

410416
// afterDestroy lifecycle hook
411417
op = opts.op = 'afterDestroy'
412-
return self[op](mapper, id, opts).then(function (_id) {
418+
return resolve(self[op](mapper, id, opts, deleted ? id : undefined)).then(function (_id) {
413419
// Allow for re-assignment from lifecycle hook
414420
id = isUndefined(_id) ? id : _id
415421
return opts.raw ? {
416-
data: id,
417-
deleted: 1
418-
} : id
422+
data: deleted ? id : undefined,
423+
deleted
424+
} : deleted ? id : undefined
419425
})
420426
}).then(success, failure)
421427
})
@@ -522,7 +528,7 @@ addHiddenPropsToTarget(LocalStorageAdapter.prototype, {
522528
self.dbg(op, id, opts)
523529
const key = self.getIdPath(mapper, opts, id)
524530
record = self.storage.getItem(key)
525-
if (isUndefined(record)) {
531+
if (!record) {
526532
record = undefined
527533
return
528534
}
@@ -548,7 +554,7 @@ addHiddenPropsToTarget(LocalStorageAdapter.prototype, {
548554
let localKeys = []
549555
let itemKeys = get(record, def.localKeys) || []
550556
itemKeys = Array.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys)
551-
localKeys = localKeys.concat(itemKeys || [])
557+
localKeys = localKeys.concat(itemKeys)
552558
task = self.findAll(relatedMapper, {
553559
where: {
554560
[relatedMapper.idAttribute]: {
@@ -559,6 +565,17 @@ addHiddenPropsToTarget(LocalStorageAdapter.prototype, {
559565
set(record, def.localField, relatedItems)
560566
return relatedItems
561567
})
568+
} else if (def.type === 'hasMany' && def.foreignKeys) {
569+
task = self.findAll(relatedMapper, {
570+
where: {
571+
[def.foreignKeys]: {
572+
'contains': get(record, mapper.idAttribute)
573+
}
574+
}
575+
}, __opts).then(function (relatedItems) {
576+
set(record, def.localField, relatedItems)
577+
return relatedItems
578+
})
562579
} else if (def.type === 'belongsTo') {
563580
task = self.find(relatedMapper, get(record, def.foreignKey), __opts).then(function (relatedItem) {
564581
set(record, def.localField, relatedItem)
@@ -857,6 +874,7 @@ addHiddenPropsToTarget(LocalStorageAdapter.prototype, {
857874
const key = self.getIdPath(mapper, opts, id)
858875
let record = self.storage.getItem(key)
859876
record = record ? fromJson(record) : undefined
877+
860878
let updated = 0
861879

862880
// Update the record
@@ -865,11 +883,13 @@ addHiddenPropsToTarget(LocalStorageAdapter.prototype, {
865883
deepMixIn(record, props)
866884
self.storage.setItem(key, toJson(record))
867885
updated++
886+
} else {
887+
throw new Error('Not Found')
868888
}
869889

870890
// afterUpdate lifecycle hook
871891
op = opts.op = 'afterUpdate'
872-
return self[op](mapper, id, props, opts, record).then(function (_record) {
892+
return resolve(self[op](mapper, id, props, opts, record)).then(function (_record) {
873893
// Allow for re-assignment from lifecycle hook
874894
record = isUndefined(_record) ? record : _record
875895
return opts.raw ? {

0 commit comments

Comments
 (0)