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}}