summaryrefslogtreecommitdiff
path: root/app/models/ci
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-01-13 23:18:50 -0800
committerStan Hu <stanhu@gmail.com>2018-01-14 08:11:51 -0800
commit8ddb00adbf73ede641bfa93388e18591c03e6668 (patch)
tree2520430147eb7514e6c373e095763a42fe5079ab /app/models/ci
parent74f2f9b30fb1972a26481072486b358eb943309f (diff)
downloadgitlab-ce-8ddb00adbf73ede641bfa93388e18591c03e6668.tar.gz
Ensure CI pipelines and builds have the correction project associations
This should reduce the number of SQL queries and lookups needed to look up a project of a build and pipeline and vice versa. Before: ``` [1] pry(main)> Ci::Build.reflect_on_association(:project).has_inverse? => false [2] pry(main)> Project.reflect_on_association(:builds).has_inverse? => false [3] pry(main)> Ci::Pipeline.reflect_on_association(:project).has_inverse? => false [4] pry(main)> Project.reflect_on_association(:pipelines).has_inverse? => :project ``` After: ``` [1] pry(main)> Ci::Build.reflect_on_association(:project).has_inverse? => :builds [2] pry(main)> Project.reflect_on_association(:builds).has_inverse? => :project [3] pry(main)> Ci::Pipeline.reflect_on_association(:project).has_inverse? => :pipelines [4] pry(main)> Project.reflect_on_association(:pipelines).has_inverse? => :project ```
Diffstat (limited to 'app/models/ci')
-rw-r--r--app/models/ci/build.rb1
-rw-r--r--app/models/ci/pipeline.rb2
2 files changed, 2 insertions, 1 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 6012dbba1b9..df67fb243ad 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -8,6 +8,7 @@ module Ci
MissingDependenciesError = Class.new(StandardError)
+ belongs_to :project, inverse_of: :builds
belongs_to :runner
belongs_to :trigger_request
belongs_to :erased_by, class_name: 'User'
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index d4690da3be6..d7153d7b816 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -7,7 +7,7 @@ module Ci
include Presentable
include Gitlab::OptimisticLocking
- belongs_to :project
+ belongs_to :project, inverse_of: :pipelines
belongs_to :user
belongs_to :auto_canceled_by, class_name: 'Ci::Pipeline'
belongs_to :pipeline_schedule, class_name: 'Ci::PipelineSchedule'