Skip to content

Commit

Permalink
Merge pull request emberjs#3209 from HeroicEric/rename-store-finders
Browse files Browse the repository at this point in the history
Rename and deprecate finders (store.all -> store.peekAll and store.getById -> store.peekRecord)
  • Loading branch information
bmac committed Jun 10, 2015
2 parents 3d7dba5 + 3f9b4b6 commit 12a8cca
Show file tree
Hide file tree
Showing 45 changed files with 744 additions and 513 deletions.
53 changes: 46 additions & 7 deletions packages/ember-data/lib/adapters/build-url-mixin.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ var get = Ember.get;
@class BuildURLMixin
@namespace DS
*/
export default Ember.Mixin.create({
var BuildURLMixin = Ember.Mixin.create({
/**
Builds a URL for a given type and optional ID.
Expand All @@ -51,12 +51,12 @@ export default Ember.Mixin.create({
*/
buildURL: function(modelName, id, snapshot, requestType, query) {
switch (requestType) {
case 'find':
return this.urlForFind(id, modelName, snapshot);
case 'findRecord':
return this.urlForFindRecord(id, modelName, snapshot);
case 'findAll':
return this.urlForFindAll(modelName);
case 'findQuery':
return this.urlForFindQuery(query, modelName);
case 'query':
return this.urlForQuery(query, modelName);
case 'findMany':
return this.urlForFindMany(id, modelName, snapshot);
case 'findHasMany':
Expand Down Expand Up @@ -109,8 +109,22 @@ export default Ember.Mixin.create({
* @param {String} modelName
* @param {DS.Snapshot} snapshot
* @return {String} url
* @deprecated Use [urlForFindRecord](#method_urlForFindRecord) instead
*/
urlForFind: function(id, modelName, snapshot) {
urlForFind: urlForFind,

/**
* @method urlForFind
* @param {String} id
* @param {String} modelName
* @param {DS.Snapshot} snapshot
* @return {String} url
*/
urlForFindRecord: function(id, modelName, snapshot) {
if (this.urlForFind !== urlForFind) {
Ember.deprecate('BuildURLMixin#urlForFind has been deprecated and renamed to `urlForFindRecord`.');
return this.urlForFind(id, modelName, snapshot);
}
return this._buildURL(modelName, id);
},

Expand All @@ -128,8 +142,21 @@ export default Ember.Mixin.create({
* @param {Object} query
* @param {String} modelName
* @return {String} url
* @deprecated Use [urlForQuery](#method_urlForQuery) instead
*/
urlForFindQuery: function(query, modelName) {
urlForFindQuery: urlForFindQuery,

/**
* @method urlForQuery
* @param {Object} query
* @param {String} modelName
* @return {String} url
*/
urlForQuery: function(query, modelName) {
if (this.urlForFindQuery !== urlForFindQuery) {
Ember.deprecate('BuildURLMixin#urlForFind has been deprecated and renamed to `urlForFindQuery`.');
return this.urlForFindQuery(query, modelName);
}
return this._buildURL(modelName);
},

Expand Down Expand Up @@ -270,3 +297,15 @@ export default Ember.Mixin.create({
return Ember.String.pluralize(camelized);
}
});

function urlForFind(id, modelName, snapshot) {
Ember.deprecate('BuildURLMixin#urlForFind has been deprecated and renamed to `urlForFindRecord`.');
return this._buildURL(modelName, id);
}

function urlForFindQuery(query, modelName) {
Ember.deprecate('BuildURLMixin#urlForFindQuery has been deprecated and renamed to `urlForQuery`.');
return this._buildURL(modelName);
}

export default BuildURLMixin;
68 changes: 61 additions & 7 deletions packages/ember-data/lib/adapters/rest-adapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -277,8 +277,8 @@ var RestAdapter = Adapter.extend(BuildURLMixin, {
relationships accessed within the same runloop. If you set `coalesceFindRequests: true`
```javascript
store.find('comment', 1);
store.find('comment', 2);
store.findRecord('comment', 1);
store.findRecord('comment', 2);
```
will also send a request to: `GET /comments?ids[]=1&ids[]=2`
Expand Down Expand Up @@ -346,25 +346,44 @@ var RestAdapter = Adapter.extend(BuildURLMixin, {
@property headers
@type {Object}
*/

/**
@method findRecord
@param {DS.Store} store
@param {DS.Model} type
@param {String} id
@param {DS.Snapshot} snapshot
@return {Promise} promise
@deprecated Use [findRecord](#method_findRecord) instead
*/
find: function(store, type, id, snapshot) {
Ember.deprecate('RestAdapter#find has been deprecated and renamed to `findRecord`.');
return this.ajax(this.buildURL(type.modelName, id, snapshot, 'find'), 'GET');
},

/**
Called by the store in order to fetch the JSON for a given
type and ID.
The `find` method makes an Ajax request to a URL computed by `buildURL`, and returns a
promise for the resulting payload.
The `findRecord` method makes an Ajax request to a URL computed by
`buildURL`, and returns a promise for the resulting payload.
This method performs an HTTP `GET` request with the id provided as part of the query string.
@method find
@method findRecord
@param {DS.Store} store
@param {DS.Model} type
@param {String} id
@param {DS.Snapshot} snapshot
@return {Promise} promise
*/
find: function(store, type, id, snapshot) {
findRecord: function(store, type, id, snapshot) {
var find = RestAdapter.prototype.find;
if (find !== this.find) {
Ember.deprecate('RestAdapter#find has been deprecated and renamed to `findRecord`.');
return this.find(store, type, id, snapshot);
}
return this.ajax(this.buildURL(type.modelName, id, snapshot, 'find'), 'GET');
},

Expand Down Expand Up @@ -394,7 +413,7 @@ var RestAdapter = Adapter.extend(BuildURLMixin, {
return this.ajax(url, 'GET', { data: query });
},

/**
/**
Called by the store in order to fetch a JSON array for
the records that match a particular query.
Expand All @@ -410,8 +429,43 @@ var RestAdapter = Adapter.extend(BuildURLMixin, {
@param {DS.Model} type
@param {Object} query
@return {Promise} promise
@deprecated Use [query](#method_query) instead
*/
findQuery: function(store, type, query) {
Ember.deprecate('RestAdapter#findQuery has been deprecated and renamed to `query`.');
var url = this.buildURL(type.modelName, null, null, 'findQuery', query);

if (this.sortQueryParams) {
query = this.sortQueryParams(query);
}

return this.ajax(url, 'GET', { data: query });
},

/**
Called by the store in order to fetch a JSON array for
the records that match a particular query.
The `findQuery` method makes an Ajax (HTTP GET) request to a URL computed by `buildURL`, and returns a
promise for the resulting payload.
The `query` argument is a simple JavaScript object that will be passed directly
to the server as parameters.
@private
@method query
@param {DS.Store} store
@param {DS.Model} type
@param {Object} query
@return {Promise} promise
*/
query: function(store, type, query) {
var findQuery = RestAdapter.prototype.findQuery;
if (findQuery !== this.findQuery) {
Ember.deprecate('RestAdapter#findQuery has been deprecated and renamed to `query`.');
return this.findQuery(store, type, query);
}

var url = this.buildURL(type.modelName, null, null, 'findQuery', query);

if (this.sortQueryParams) {
Expand Down
70 changes: 60 additions & 10 deletions packages/ember-data/lib/serializers/json-serializer.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ var merge = Ember.merge;
@namespace DS
@extends DS.Serializer
*/
export default Serializer.extend({
var JSONSerializer = Serializer.extend({

/**
The primaryKey is used when serializing and deserializing
Expand Down Expand Up @@ -231,8 +231,8 @@ export default Serializer.extend({
*/
normalizeResponse: function(store, primaryModelClass, payload, id, requestType) {
switch (requestType) {
case 'find':
return this.normalizeFindResponse(...arguments);
case 'findRecord':
return this.normalizeFindRecordResponse(...arguments);
case 'findAll':
return this.normalizeFindAllResponse(...arguments);
case 'findBelongsTo':
Expand All @@ -241,8 +241,8 @@ export default Serializer.extend({
return this.normalizeFindHasManyResponse(...arguments);
case 'findMany':
return this.normalizeFindManyResponse(...arguments);
case 'findQuery':
return this.normalizeFindQueryResponse(...arguments);
case 'query':
return this.normalizeQueryResponse(...arguments);
case 'createRecord':
return this.normalizeCreateRecordResponse(...arguments);
case 'deleteRecord':
Expand All @@ -253,15 +253,15 @@ export default Serializer.extend({
},

/*
@method normalizeFindResponse
@method normalizeFindRecordResponse
@param {DS.Store} store
@param {DS.Model} primaryModelClass
@param {Object} payload
@param {String|Number} id
@param {String} requestType
@return {Object} JSON-API Document
*/
normalizeFindResponse: function(store, primaryModelClass, payload, id, requestType) {
normalizeFindRecordResponse: function(store, primaryModelClass, payload, id, requestType) {
return this.normalizeSingleResponse(...arguments);
},

Expand Down Expand Up @@ -318,15 +318,15 @@ export default Serializer.extend({
},

/*
@method normalizeFindQueryResponse
@method normalizeQueryResponse
@param {DS.Store} store
@param {DS.Model} primaryModelClass
@param {Object} payload
@param {String|Number} id
@param {String} requestType
@return {Object} JSON-API Document
*/
normalizeFindQueryResponse: function(store, primaryModelClass, payload, id, requestType) {
normalizeQueryResponse: function(store, primaryModelClass, payload, id, requestType) {
return this.normalizeArrayResponse(...arguments);
},

Expand Down Expand Up @@ -1186,7 +1186,7 @@ export default Serializer.extend({
*/
extract: function(store, typeClass, payload, id, requestType) {
this.extractMeta(store, typeClass.modelName, payload);

var specificExtract = "extract" + requestType.charAt(0).toUpperCase() + requestType.substr(1);
return this[specificExtract](store, typeClass, payload, id, requestType);
},
Expand Down Expand Up @@ -1219,8 +1219,31 @@ export default Serializer.extend({
@param {(String|Number)} id
@param {String} requestType
@return {Array} array An array of deserialized objects
@deprecated Use [extractQuery](#method_extractQuery) instead
*/
extractFindQuery: function(store, typeClass, payload, id, requestType) {
Ember.deprecate('Serializer#extractFindQuery has been deprecated and renamed to `extractQuery`.');
return this.extractArray(store, typeClass, payload, id, requestType);
},
/**
`extractQuery` is a hook into the extract method used when a
call is made to `DS.Store#query`. By default this method is an
alias for [extractArray](#method_extractArray).
@method extractQuery
@param {DS.Store} store
@param {DS.Model} typeClass
@param {Object} payload
@param {(String|Number)} id
@param {String} requestType
@return {Array} array An array of deserialized objects
*/
extractQuery: function(store, typeClass, payload, id, requestType) {
var jsonExtractFindQuery = JSONSerializer.prototype.extractFindQuery;
if (jsonExtractFindQuery !== this.extractFindQuery) {
Ember.deprecate('Serializer#extractFindQuery has been deprecated and renamed to `extractQuery`.');
return this.extractFindQuery(store, typeClass, payload, id, requestType);
}
return this.extractArray(store, typeClass, payload, id, requestType);
},
/**
Expand Down Expand Up @@ -1317,10 +1340,35 @@ export default Serializer.extend({
@param {(String|Number)} id
@param {String} requestType
@return {Object} json The deserialized payload
@deprecated Use [extractFindRecord](#method_extractFindRecord) instead
*/
extractFind: function(store, typeClass, payload, id, requestType) {
Ember.deprecate('Serializer#extractFind has been deprecated and renamed to `extractFindRecord`.');
return this.extractSingle(store, typeClass, payload, id, requestType);
},

/**
`extractFindRecord` is a hook into the extract method used when
a call is made to `DS.Store#findRecord`. By default this method is
alias for [extractSingle](#method_extractSingle).
@method extractFindRecord
@param {DS.Store} store
@param {DS.Model} typeClass
@param {Object} payload
@param {(String|Number)} id
@param {String} requestType
@return {Object} json The deserialized payload
*/
extractFindRecord: function(store, typeClass, payload, id, requestType) {
var jsonExtractFind = JSONSerializer.prototype.extractFind;
if (jsonExtractFind !== this.extractFind) {
Ember.deprecate('Serializer#extractFind has been deprecated and renamed to `extractFindRecord`.');
return this.extractFind(store, typeClass, payload, id, requestType);
}
return this.extractSingle(store, typeClass, payload, id, requestType);
},

/**
`extractFindBelongsTo` is a hook into the extract method used when
a call is made to `DS.Store#findBelongsTo`. By default this method is
Expand Down Expand Up @@ -1616,3 +1664,5 @@ function _newExtractMeta(store, modelClass, payload) {
return meta;
}
}

export default JSONSerializer;
Loading

0 comments on commit 12a8cca

Please sign in to comment.