diff --git a/app/models/branch.coffee b/app/models/branch.coffee index 3ed2411d..3a8e6405 100644 --- a/app/models/branch.coffee +++ b/app/models/branch.coffee @@ -2,6 +2,11 @@ `import Model from 'travis/models/model'` Branch = Model.extend + name: DS.attr('string') + defaultBranch: DS.attr('boolean') + lastBuild: DS.belongsTo('build') + builds: DS.hasMany('builds', inverse: 'branch') + repo: DS.belongsTo('repo', inverse: 'defaultBranch') `export default Branch` diff --git a/app/models/build.coffee b/app/models/build.coffee index bc61ad4d..a4ceb34e 100644 --- a/app/models/build.coffee +++ b/app/models/build.coffee @@ -9,7 +9,6 @@ Build = Model.extend DurationCalculations, state: DS.attr() number: DS.attr('number') - branch: DS.attr('string') message: DS.attr('string') _duration: DS.attr('number') _config: DS.attr('object') @@ -21,8 +20,9 @@ Build = Model.extend DurationCalculations, eventType: DS.attr('string') repositoryId: DS.attr('number') + branch: DS.belongsTo('branch', async: false, inverse: 'builds') repo: DS.belongsTo('repo', async: true) - commit: DS.belongsTo('commit') + commit: DS.belongsTo('commit', async: false) jobs: DS.hasMany('job', async: true) config: (-> diff --git a/app/models/job.coffee b/app/models/job.coffee index 2c465693..b1cd747a 100644 --- a/app/models/job.coffee +++ b/app/models/job.coffee @@ -24,6 +24,8 @@ Job = Model.extend DurationCalculations, build: DS.belongsTo('build', async: true) commit: DS.belongsTo('commit', async: true) + branch: Ember.computed.alias('build.branch') + annotations: DS.hasMany('annotation') _config: DS.attr('object') diff --git a/app/models/repo.coffee b/app/models/repo.coffee index 764428bf..6467566e 100644 --- a/app/models/repo.coffee +++ b/app/models/repo.coffee @@ -15,7 +15,7 @@ Repo = Model.extend active: DS.attr() #lastBuild: DS.belongsTo('build') - defaultBranch: DS.belongsTo('branch') + defaultBranch: DS.belongsTo('branch', async: false) withLastBuild: -> @filter( (repo) -> repo.get('defaultBranch.lastBuild') ) diff --git a/app/serializers/build.js b/app/serializers/build.js index 94f878f1..c30cc424 100644 --- a/app/serializers/build.js +++ b/app/serializers/build.js @@ -54,6 +54,18 @@ var Serializer = V2FallbackSerializer.extend({ normalize: function(modelClass, resourceHash) { var data, href, id, repoId, result; + // TODO: remove this after switching to V3 entirely + if(!resourceHash['@type']) { + let build = resourceHash.build, + commit = resourceHash.commit; + let branch = { + name: commit.branch, + default_branch: build.is_on_default_branch, + "@href": `/repo/${build.repository_id}/branch/${commit.branch}` + }; + resourceHash.build.branch = branch; + } + result = this._super(modelClass, resourceHash); data = result.data; diff --git a/app/serializers/v2_fallback.js b/app/serializers/v2_fallback.js index bb8dbbf1..b7d13fe2 100644 --- a/app/serializers/v2_fallback.js +++ b/app/serializers/v2_fallback.js @@ -60,7 +60,7 @@ export default V3Serializer.extend({ Object.keys(data.relationships).forEach(function (key) { let relationship = data.relationships[key]; let process = function(data) { - if(Object.keys(data).sort()+'' !== 'id,type') { + if(Object.keys(data).sort()+'' !== 'id,type' || (data['@href'] && data.type == 'branch')) { // no need to add records if they have only id and type let type = key.singularize(); let serializer = store.serializerFor(type); diff --git a/app/serializers/v3.js b/app/serializers/v3.js index 918d5933..943519f3 100644 --- a/app/serializers/v3.js +++ b/app/serializers/v3.js @@ -28,6 +28,10 @@ export default DS.JSONSerializer.extend({ isNewSerializerAPI: true, extractRelationship(type, hash) { + if(!hash.id && hash['@href']) { + hash.id = hash['@href']; + } + let relationshipHash = this._super(...arguments); if(relationshipHash && relationshipHash['@type']) { relationshipHash.type = relationshipHash['@type']; diff --git a/app/templates/components/build-header.hbs b/app/templates/components/build-header.hbs index b1c3c807..07a9e7ae 100644 --- a/app/templates/components/build-header.hbs +++ b/app/templates/components/build-header.hbs @@ -5,7 +5,7 @@ Pull Request #{{item.pullRequestNumber}} {{item.pullRequestTitle}} {{else}} - {{item.commit.branch}} + {{item.branch.name}} {{format-message item.commit.subject repo=item.repo}} {{/if}}