69 lines
2.0 KiB
CoffeeScript
69 lines
2.0 KiB
CoffeeScript
Travis.Adapter = Ember.RESTAdapter.extend
|
|
ajax: (url, params, method) ->
|
|
Travis.ajax.ajax(url, method || 'get', data: params)
|
|
|
|
findMany: (klass, records, ids) ->
|
|
url = @buildURL(klass)
|
|
|
|
self = this
|
|
@ajax(url, ids: ids).then (data) ->
|
|
self.didFindMany(klass, records, data)
|
|
|
|
didFindMany: (klass, records, data) ->
|
|
collectionKey = Ember.get(klass, 'collectionKey')
|
|
dataToLoad = if collectionKey then data[collectionKey] else data
|
|
|
|
@sideload(klass, data)
|
|
records.load(klass, dataToLoad)
|
|
@addToRecordArrays(records.get('content'))
|
|
|
|
buildURL: ->
|
|
@_super.apply(this, arguments).replace(/\.json$/, '')
|
|
|
|
didFind: (record, id, data) ->
|
|
@sideload(record.constructor, data)
|
|
@_super(record, id, data)
|
|
@addToRecordArrays(record)
|
|
|
|
didFindAll: (klass, records, data) ->
|
|
@sideload(klass, data)
|
|
@_super(klass, records, data)
|
|
@addToRecordArrays(records.get('content'))
|
|
|
|
didFindQuery: (klass, records, params, data) ->
|
|
@sideload(klass, data)
|
|
@_super(klass, records, params, data)
|
|
@addToRecordArrays(records.get('content'))
|
|
|
|
didCreateRecord: (record, data) ->
|
|
@sideload(record.constructor, data)
|
|
@_super(record, data)
|
|
@addToRecordArrays(record)
|
|
|
|
didSaveRecord: (record, data) ->
|
|
@sideload(record.constructor, data)
|
|
@_super(record, data)
|
|
@addToRecordArrays(record)
|
|
|
|
didDeleteRecord: (record, data) ->
|
|
@sideload(record.constructor, data)
|
|
@_super(record, data)
|
|
@addToRecordArrays(record)
|
|
|
|
addToRecordArrays: (records) ->
|
|
records = [records] unless Ember.isArray(records)
|
|
for record in records
|
|
record.constructor.addToRecordArrays(record)
|
|
|
|
|
|
sideload: (klass, data) ->
|
|
for name, records of data
|
|
records = [records] unless Ember.isArray(records)
|
|
|
|
# we need to skip records of type, which is loaded by adapter already
|
|
if (type = Ember.get(Travis, 'mappings')[name]) && type != klass
|
|
for record in records
|
|
type.findFromCacheOrLoad(record)
|
|
|
|
|