Skip to content

Commit

Permalink
Attach the adapterOptions to the snapshot
Browse files Browse the repository at this point in the history
  • Loading branch information
bmac committed Jun 13, 2015
1 parent f260bdc commit 13000d1
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 77 deletions.
7 changes: 1 addition & 6 deletions packages/ember-data/lib/system/adapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,6 @@ var Adapter = Ember.Object.extend({
@param {DS.Model} type
@param {String} id
@param {DS.Snapshot} snapshot
@param {Object} adapterOptions
@return {Promise} promise
*/
find: null,
Expand Down Expand Up @@ -152,7 +151,7 @@ var Adapter = Ember.Object.extend({
@param {DS.Store} store
@param {DS.Model} type
@param {String} sinceToken
@param {Object} adapterOptions
@param {DS.SnapshotRecordArray} snapshotRecordArray
@return {Promise} promise
*/
findAll: null,
Expand Down Expand Up @@ -186,7 +185,6 @@ var Adapter = Ember.Object.extend({
@param {DS.Model} type
@param {Object} query
@param {DS.AdapterPopulatedRecordArray} recordArray
@param {Object} adapterOptions
@return {Promise} promise
*/
findQuery: null,
Expand Down Expand Up @@ -285,7 +283,6 @@ var Adapter = Ember.Object.extend({
@param {DS.Store} store
@param {DS.Model} type the DS.Model class of the record
@param {DS.Snapshot} snapshot
@param {Object} adapterOptions
@return {Promise} promise
*/
createRecord: null,
Expand Down Expand Up @@ -328,7 +325,6 @@ var Adapter = Ember.Object.extend({
@param {DS.Store} store
@param {DS.Model} type the DS.Model class of the record
@param {DS.Snapshot} snapshot
@param {Object} adapterOptions
@return {Promise} promise
*/
updateRecord: null,
Expand Down Expand Up @@ -371,7 +367,6 @@ var Adapter = Ember.Object.extend({
@param {DS.Store} store
@param {DS.Model} type the DS.Model class of the record
@param {DS.Snapshot} snapshot
@param {Object} adapterOptions
@return {Promise} promise
*/
deleteRecord: null,
Expand Down
7 changes: 5 additions & 2 deletions packages/ember-data/lib/system/model/internal-model.js
Original file line number Diff line number Diff line change
Expand Up @@ -221,8 +221,11 @@ InternalModel.prototype = {
@method createSnapshot
@private
*/
createSnapshot: function() {
return new Snapshot(this);
createSnapshot: function(options) {
var adapterOptions = options && options.adapterOptions;
var snapshot = new Snapshot(this);
snapshot.adapterOptions = adapterOptions;
return snapshot;
},

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/ember-data/lib/system/model/model.js
Original file line number Diff line number Diff line change
Expand Up @@ -494,8 +494,8 @@ var Model = Ember.Object.extend(Ember.Evented, {
@method deleteRecord
*/
deleteRecord: function(options) {
this._internalModel.deleteRecord(options);
deleteRecord: function() {
this._internalModel.deleteRecord();
},

/**
Expand Down
18 changes: 7 additions & 11 deletions packages/ember-data/lib/system/store.js
Original file line number Diff line number Diff line change
Expand Up @@ -1000,10 +1000,9 @@ Store = Service.extend({
@method query
@param {String} modelName
@param {any} query an opaque query to be used by the adapter
@param {Object} options
@return {Promise} promise
*/
query: function(modelName, query, options) {
query: function(modelName, query) {
Ember.assert('Passing classes to store methods has been removed. Please pass a dasherized string instead of '+ Ember.inspect(modelName), typeof modelName === 'string');
var typeClass = this.modelFor(modelName);
var array = this.recordArrayManager
Expand All @@ -1014,7 +1013,7 @@ Store = Service.extend({
Ember.assert("You tried to load a query but you have no adapter (for " + typeClass + ")", adapter);
Ember.assert("You tried to load a query but your adapter does not implement `findQuery`", typeof adapter.findQuery === 'function');

return promiseArray(_query(adapter, this, typeClass, query, array, options));
return promiseArray(_query(adapter, this, typeClass, query, array));
},

/**
Expand Down Expand Up @@ -1356,13 +1355,12 @@ Store = Service.extend({
@param {Object} options
*/
scheduleSave: function(internalModel, resolver, options) {
var snapshot = internalModel.createSnapshot();
var snapshot = internalModel.createSnapshot(options);
internalModel.flushChangedAttributes();
internalModel.adapterWillCommit();
this._pendingSave.push({
snapshot: snapshot,
resolver: resolver,
options: options
resolver: resolver
});
once(this, 'flushPendingSave');
},
Expand All @@ -1381,7 +1379,6 @@ Store = Service.extend({
forEach(pending, function(pendingItem) {
var snapshot = pendingItem.snapshot;
var resolver = pendingItem.resolver;
var options = pendingItem.options;
var record = snapshot._internalModel;
var adapter = this.adapterFor(record.type.modelName);
var operation;
Expand All @@ -1396,7 +1393,7 @@ Store = Service.extend({
operation = 'updateRecord';
}

resolver.resolve(_commit(adapter, this, operation, snapshot, options));
resolver.resolve(_commit(adapter, this, operation, snapshot));
}, this);
},

Expand Down Expand Up @@ -2171,12 +2168,11 @@ function defaultSerializer(container) {
container.lookup('serializer:-default');
}

function _commit(adapter, store, operation, snapshot, options) {
function _commit(adapter, store, operation, snapshot) {
var record = snapshot._internalModel;
var modelName = snapshot.modelName;
var type = store.modelFor(modelName);
var adapterOptions = options && options.adapterOptions;
var promise = adapter[operation](store, type, snapshot, adapterOptions);
var promise = adapter[operation](store, type, snapshot);
var serializer = serializerForAdapter(store, adapter, modelName);
var label = "DS: Extract and notify about " + operation + " completion of " + record;

Expand Down
10 changes: 4 additions & 6 deletions packages/ember-data/lib/system/store/finders.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,8 @@ var Promise = Ember.RSVP.Promise;
var map = Ember.EnumerableUtils.map;

export function _find(adapter, store, typeClass, id, internalModel, options) {
var adapterOptions = options && options.adapterOptions;
var snapshot = internalModel.createSnapshot();
var promise = adapter.find(store, typeClass, id, snapshot, adapterOptions);
var snapshot = internalModel.createSnapshot(options);
var promise = adapter.find(store, typeClass, id, snapshot);
var serializer = serializerForAdapter(store, adapter, internalModel.type.modelName);
var label = "DS: Handle Adapter#find of " + typeClass + " with id: " + id;

Expand Down Expand Up @@ -144,10 +143,9 @@ export function _findAll(adapter, store, typeClass, sinceToken, options) {
}, null, "DS: Extract payload of findAll " + typeClass);
}

export function _query(adapter, store, typeClass, query, recordArray, options) {
export function _query(adapter, store, typeClass, query, recordArray) {
var modelName = typeClass.modelName;
var adapterOptions = options && options.adapterOptions;
var promise = adapter.findQuery(store, typeClass, query, recordArray, adapterOptions);
var promise = adapter.findQuery(store, typeClass, query, recordArray);
var serializer = serializerForAdapter(store, adapter, modelName);
var label = "DS: Handle Adapter#findQuery of " + typeClass;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -951,8 +951,8 @@ test("findBelongsTo receives a snapshot", function() {
test("record.save should pass adapterOptions to the updateRecord method", function() {
expect(1);

env.adapter.updateRecord = async(function(store, type, snapshot, adapterOptions) {
deepEqual(adapterOptions, { subscribe: true });
env.adapter.updateRecord = async(function(store, type, snapshot) {
deepEqual(snapshot.adapterOptions, { subscribe: true });
return Ember.RSVP.resolve({ id: 1 });
});

Expand All @@ -965,8 +965,8 @@ test("record.save should pass adapterOptions to the updateRecord method", functi
test("record.save should pass adapterOptions to the createRecord method", function() {
expect(1);

env.adapter.createRecord = async(function(store, type, snapshot, adapterOptions) {
deepEqual(adapterOptions, { subscribe: true });
env.adapter.createRecord = async(function(store, type, snapshot) {
deepEqual(snapshot.adapterOptions, { subscribe: true });
return Ember.RSVP.resolve({ id: 1 });
});

Expand All @@ -979,8 +979,8 @@ test("record.save should pass adapterOptions to the createRecord method", functi
test("record.save should pass adapterOptions to the deleteRecord method", function() {
expect(1);

env.adapter.deleteRecord = async(function(store, type, snapshot, adapterOptions) {
deepEqual(adapterOptions, { subscribe: true });
env.adapter.deleteRecord = async(function(store, type, snapshot) {
deepEqual(snapshot.adapterOptions, { subscribe: true });
return Ember.RSVP.resolve({ id: 1 });
});

Expand All @@ -994,22 +994,8 @@ test("record.save should pass adapterOptions to the deleteRecord method", functi
test("findRecord should pass adapterOptions to the find method", function() {
expect(1);

env.adapter.find = async(function(store, type, id, snapshot, adapterOptions) {
deepEqual(adapterOptions, { query: { embed: true } });
return Ember.RSVP.resolve({ id: 1 });
});

run(function() {
store.findRecord('person', 1, { adapterOptions: { query: { embed: true } } });
});
});


test("findRecord should pass adapterOptions to the find method", function() {
expect(1);

env.adapter.find = async(function(store, type, id, snapshot, adapterOptions) {
deepEqual(adapterOptions, { query: { embed: true } });
env.adapter.find = async(function(store, type, id, snapshot) {
deepEqual(snapshot.adapterOptions, { query: { embed: true } });
return Ember.RSVP.resolve({ id: 1 });
});

Expand All @@ -1032,31 +1018,3 @@ test("findAll should pass adapterOptions to the findAll method", function() {
store.findAll('person', { adapterOptions: { query: { embed: true } } });
});
});


test("query should pass adapterOptions to the findQuery method", function() {
expect(1);

env.adapter.findQuery = async(function(store, type, query, recordArray, adapterOptions) {
deepEqual(adapterOptions, { subscribe: true });
return Ember.RSVP.resolve([{ id: 1 }]);
});

run(function() {
store.query('person', {}, { adapterOptions: { subscribe: true } });
});
});


// test("queryRecord should pass adapterOptions to the findQueryRecord method", function() {
// expect(1);

// env.adapter.findQueryRecord = async(function(store, type, query, recordArray, adapterOptions) {
// deepEqual(adapterOptions, { subscribe: true });
// return Ember.RSVP.resolve([{ id: 1 }]);
// });

// run(function() {
// store.queryRecord('person', {}, { adapterOptions: { subscribe: true } });
// });
// });

0 comments on commit 13000d1

Please sign in to comment.