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 ```
This commit is contained in:
parent
74f2f9b30f
commit
8ddb00adbf
|
@ -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'
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -199,13 +199,13 @@ class Project < ActiveRecord::Base
|
|||
has_many :container_repositories, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
|
||||
|
||||
has_many :commit_statuses
|
||||
has_many :pipelines, class_name: 'Ci::Pipeline'
|
||||
has_many :pipelines, class_name: 'Ci::Pipeline', inverse_of: :project
|
||||
|
||||
# Ci::Build objects store data on the file system such as artifact files and
|
||||
# build traces. Currently there's no efficient way of removing this data in
|
||||
# bulk that doesn't involve loading the rows into memory. As a result we're
|
||||
# still using `dependent: :destroy` here.
|
||||
has_many :builds, class_name: 'Ci::Build', dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
|
||||
has_many :builds, class_name: 'Ci::Build', inverse_of: :project, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
|
||||
has_many :build_trace_section_names, class_name: 'Ci::BuildTraceSectionName'
|
||||
has_many :runner_projects, class_name: 'Ci::RunnerProject'
|
||||
has_many :runners, through: :runner_projects, source: :runner, class_name: 'Ci::Runner'
|
||||
|
|
Loading…
Reference in New Issue