diff --git a/.rubocop_todo/gitlab/bounded_contexts.yml b/.rubocop_todo/gitlab/bounded_contexts.yml index 5c9ae67889a1085f8aa0db25c794fea03ccaedaa..af963a004deab232bf8cc70fea98e743dcac4d4e 100644 --- a/.rubocop_todo/gitlab/bounded_contexts.yml +++ b/.rubocop_todo/gitlab/bounded_contexts.yml @@ -2984,7 +2984,6 @@ Gitlab/BoundedContexts: - 'ee/app/models/ee/resource_milestone_event.rb' - 'ee/app/models/ee/resource_state_event.rb' - 'ee/app/models/ee/resource_timebox_event.rb' - - 'ee/app/models/ee/review.rb' - 'ee/app/models/ee/service_desk_setting.rb' - 'ee/app/models/ee/snippet.rb' - 'ee/app/models/ee/snippet_repository.rb' @@ -3054,7 +3053,6 @@ Gitlab/BoundedContexts: - 'ee/app/models/license.rb' - 'ee/app/models/members/member_role.rb' - 'ee/app/models/merge_request/predictions.rb' - - 'ee/app/models/merge_request/review_llm_summary.rb' - 'ee/app/models/merge_request_block.rb' - 'ee/app/models/merge_request_diff_detail.rb' - 'ee/app/models/namespace_limit.rb' diff --git a/.rubocop_todo/style/inline_disable_annotation.yml b/.rubocop_todo/style/inline_disable_annotation.yml index 09522a41e4af4ae3517434ba537d6c542c6e3fbe..b090c46cdd8bf40755e1492b62ccc22fc5aa9162 100644 --- a/.rubocop_todo/style/inline_disable_annotation.yml +++ b/.rubocop_todo/style/inline_disable_annotation.yml @@ -1378,7 +1378,6 @@ Style/InlineDisableAnnotation: - 'ee/app/models/license.rb' - 'ee/app/models/members/member_role.rb' - 'ee/app/models/merge_request/predictions.rb' - - 'ee/app/models/merge_request/review_llm_summary.rb' - 'ee/app/models/merge_requests/compliance_violation.rb' - 'ee/app/models/merge_trains/car.rb' - 'ee/app/models/package_metadata/package.rb' diff --git a/db/docs/batched_background_migrations/backfill_merge_request_review_llm_summaries_project_id.yml b/db/docs/batched_background_migrations/backfill_merge_request_review_llm_summaries_project_id.yml index 6205e3391e9cf084d3675a0763fa402aee756286..16952d1fb9d93c258ffdd724628c652162671ff8 100644 --- a/db/docs/batched_background_migrations/backfill_merge_request_review_llm_summaries_project_id.yml +++ b/db/docs/batched_background_migrations/backfill_merge_request_review_llm_summaries_project_id.yml @@ -6,4 +6,4 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156319 milestone: '17.2' queued_migration_version: 20240613154059 finalize_after: '2024-08-22' -finalized_by: # version of the migration that finalized this BBM +finalized_by: 20240703134651 diff --git a/db/docs/merge_request_review_llm_summaries.yml b/db/docs/deleted_tables/merge_request_review_llm_summaries.yml similarity index 87% rename from db/docs/merge_request_review_llm_summaries.yml rename to db/docs/deleted_tables/merge_request_review_llm_summaries.yml index 5c2b7e60b6ec6c7ca7845ae1c6d300f9ed5968d1..bb8c3ed67842e07a7411a649e7b33be111239b7e 100644 --- a/db/docs/merge_request_review_llm_summaries.yml +++ b/db/docs/deleted_tables/merge_request_review_llm_summaries.yml @@ -21,3 +21,5 @@ desired_sharding_key: sharding_key: project_id belongs_to: review desired_sharding_key_migration_job_name: BackfillMergeRequestReviewLlmSummariesProjectId +removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/157572 +removed_in_milestone: 17.2 diff --git a/db/post_migrate/20240703134651_finalize_backfill_merge_request_review_llm_summaries_project_id.rb b/db/post_migrate/20240703134651_finalize_backfill_merge_request_review_llm_summaries_project_id.rb new file mode 100644 index 0000000000000000000000000000000000000000..0565b46c25c00125e9ad418d3377f5cca56c3896 --- /dev/null +++ b/db/post_migrate/20240703134651_finalize_backfill_merge_request_review_llm_summaries_project_id.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +# See https://docs.gitlab.com/ee/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class FinalizeBackfillMergeRequestReviewLlmSummariesProjectId < Gitlab::Database::Migration[2.2] + milestone '17.2' + disable_ddl_transaction! + restrict_gitlab_migration gitlab_schema: :gitlab_main_cell + + MIGRATION = "BackfillMergeRequestReviewLlmSummariesProjectId" + + def up + ensure_batched_background_migration_is_finished( + job_class_name: MIGRATION, + table_name: :merge_request_review_llm_summaries, + column_name: :id, + job_arguments: [:project_id, :reviews, :project_id, :review_id], + finalize: true + ) + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20240705090747_remove_review_summaries_user_fk.rb b/db/post_migrate/20240705090747_remove_review_summaries_user_fk.rb new file mode 100644 index 0000000000000000000000000000000000000000..bb023f956b1dcd409c4d339cb2ad61a5284ba7ce --- /dev/null +++ b/db/post_migrate/20240705090747_remove_review_summaries_user_fk.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +# See https://docs.gitlab.com/ee/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class RemoveReviewSummariesUserFk < Gitlab::Database::Migration[2.2] + milestone '17.2' + disable_ddl_transaction! + + OLD_FK_NAME = 'fk_d07eeb6392' + + def up + remove_foreign_key_if_exists( + :merge_request_review_llm_summaries, + :users, + column: :user_id, + on_delete: :cascade, + name: OLD_FK_NAME, + reverse_lock_order: true + ) + end + + def down + add_concurrent_foreign_key( + :merge_request_review_llm_summaries, + :users, + column: :user_id, + on_delete: :cascade, + name: OLD_FK_NAME, + reverse_lock_order: true + ) + end +end diff --git a/db/post_migrate/20240705090811_remove_review_summaries_project_fk.rb b/db/post_migrate/20240705090811_remove_review_summaries_project_fk.rb new file mode 100644 index 0000000000000000000000000000000000000000..0c7bd3b57009ea85a6b62206f4d405425fc11c11 --- /dev/null +++ b/db/post_migrate/20240705090811_remove_review_summaries_project_fk.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class RemoveReviewSummariesProjectFk < Gitlab::Database::Migration[2.2] + milestone '17.2' + disable_ddl_transaction! + + OLD_FK_NAME = 'fk_a09309bbeb' + + def up + remove_foreign_key_if_exists( + :merge_request_review_llm_summaries, + :projects, + column: :project_id, + on_delete: :cascade, + name: OLD_FK_NAME, + reverse_lock_order: true + ) + end + + def down + add_concurrent_foreign_key( + :merge_request_review_llm_summaries, + :projects, + column: :project_id, + on_delete: :cascade, + name: OLD_FK_NAME, + reverse_lock_order: true + ) + end +end diff --git a/db/post_migrate/20240705091219_remove_review_summaries_mr_diff_fk.rb b/db/post_migrate/20240705091219_remove_review_summaries_mr_diff_fk.rb new file mode 100644 index 0000000000000000000000000000000000000000..39af8d7f456096688381ba60d890841cd213dac1 --- /dev/null +++ b/db/post_migrate/20240705091219_remove_review_summaries_mr_diff_fk.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class RemoveReviewSummariesMrDiffFk < Gitlab::Database::Migration[2.2] + milestone '17.2' + disable_ddl_transaction! + + OLD_FK_NAME = 'fk_8ec009c6ab' + + def up + remove_foreign_key_if_exists( + :merge_request_review_llm_summaries, + :merge_request_diffs, + column: :merge_request_diff_id, + on_delete: :cascade, + name: OLD_FK_NAME, + reverse_lock_order: true + ) + end + + def down + add_concurrent_foreign_key( + :merge_request_review_llm_summaries, + :merge_request_diffs, + column: :merge_request_diff_id, + on_delete: :cascade, + name: OLD_FK_NAME, + reverse_lock_order: true + ) + end +end diff --git a/db/post_migrate/20240705091240_remove_review_summaries_table.rb b/db/post_migrate/20240705091240_remove_review_summaries_table.rb new file mode 100644 index 0000000000000000000000000000000000000000..ee33b83d383d7c01933a5977d58f309f044135fe --- /dev/null +++ b/db/post_migrate/20240705091240_remove_review_summaries_table.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +# See https://docs.gitlab.com/ee/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class RemoveReviewSummariesTable < Gitlab::Database::Migration[2.2] + milestone '17.2' + disable_ddl_transaction! + + def up + drop_table :merge_request_review_llm_summaries, if_exists: true + end + + def down + create_table :merge_request_review_llm_summaries, id: :bigserial, force: :cascade do |t| + t.bigint :user_id + t.bigint :review_id, null: false + t.bigint :merge_request_diff_id, null: false + t.datetime_with_timezone :created_at, null: false + t.datetime_with_timezone :updated_at, null: false + t.column :provider, :smallint, null: false + t.text :content, null: false, limit: 2056 + t.integer :cached_markdown_version + t.text :content_html + t.bigint :project_id + end + + add_index :merge_request_review_llm_summaries, :merge_request_diff_id, + name: :index_merge_request_review_llm_summaries_on_mr_diff_id + add_index :merge_request_review_llm_summaries, :project_id, + name: :index_merge_request_review_llm_summaries_on_project_id + add_index :merge_request_review_llm_summaries, :review_id, + name: :index_merge_request_review_llm_summaries_on_review_id + add_index :merge_request_review_llm_summaries, :user_id, name: :index_merge_request_review_llm_summaries_on_user_id + + add_concurrent_foreign_key :merge_request_review_llm_summaries, :reviews, column: :review_id + + install_sharding_key_assignment_trigger( + table: :merge_request_review_llm_summaries, + sharding_key: :project_id, + parent_table: :reviews, + parent_sharding_key: :project_id, + foreign_key: :review_id + ) + end +end diff --git a/db/schema_migrations/20240703134651 b/db/schema_migrations/20240703134651 new file mode 100644 index 0000000000000000000000000000000000000000..2bd9607d6b1260ca7e94212f3fcb78b0818f9b23 --- /dev/null +++ b/db/schema_migrations/20240703134651 @@ -0,0 +1 @@ +481c5d38392ab53378ef889e8e83e259e604fc6fdc82ac66905f97c0682aa8d6 \ No newline at end of file diff --git a/db/schema_migrations/20240705090747 b/db/schema_migrations/20240705090747 new file mode 100644 index 0000000000000000000000000000000000000000..52012e3f9d391ed6f6d599c4bfbd8cc89257d7b7 --- /dev/null +++ b/db/schema_migrations/20240705090747 @@ -0,0 +1 @@ +fcfb75243c3ccc3aec811b5f93104afd6aba60acd00235d393eb630aee44d547 \ No newline at end of file diff --git a/db/schema_migrations/20240705090811 b/db/schema_migrations/20240705090811 new file mode 100644 index 0000000000000000000000000000000000000000..065c25c2b65c24663c777d6a0798e180cb4268b6 --- /dev/null +++ b/db/schema_migrations/20240705090811 @@ -0,0 +1 @@ +568e1e0d0c72036794099eaf683695ef3d43e17289419bfc785dbe45dd92087b \ No newline at end of file diff --git a/db/schema_migrations/20240705091219 b/db/schema_migrations/20240705091219 new file mode 100644 index 0000000000000000000000000000000000000000..b29b19f87f3de0e6915c6922e21446a79bb5120f --- /dev/null +++ b/db/schema_migrations/20240705091219 @@ -0,0 +1 @@ +fabd67297907c8bf15d60d9b5f4058e6cf22d3de094bccc479621b936b12fc50 \ No newline at end of file diff --git a/db/schema_migrations/20240705091240 b/db/schema_migrations/20240705091240 new file mode 100644 index 0000000000000000000000000000000000000000..5ce99f04b4042d2cf6612e34872c7881800da61a --- /dev/null +++ b/db/schema_migrations/20240705091240 @@ -0,0 +1 @@ +42b84b80d2825945901a16f1675865c944a940f4b1d077cab472dbaff92be021 \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 671e9130e13c56103fa9f0e660497f8d46260f4c..6f08a7c2e16703cbb1dce5702bb4f99dc0479966 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -12669,30 +12669,6 @@ CREATE SEQUENCE merge_request_requested_changes_id_seq ALTER SEQUENCE merge_request_requested_changes_id_seq OWNED BY merge_request_requested_changes.id; -CREATE TABLE merge_request_review_llm_summaries ( - id bigint NOT NULL, - user_id bigint, - review_id bigint NOT NULL, - merge_request_diff_id bigint NOT NULL, - created_at timestamp with time zone NOT NULL, - updated_at timestamp with time zone NOT NULL, - provider smallint NOT NULL, - content text NOT NULL, - cached_markdown_version integer, - content_html text, - project_id bigint, - CONSTRAINT check_72802358e9 CHECK ((char_length(content) <= 2056)) -); - -CREATE SEQUENCE merge_request_review_llm_summaries_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - -ALTER SEQUENCE merge_request_review_llm_summaries_id_seq OWNED BY merge_request_review_llm_summaries.id; - CREATE TABLE merge_request_reviewers ( id bigint NOT NULL, user_id bigint NOT NULL, @@ -21043,8 +21019,6 @@ ALTER TABLE ONLY merge_request_predictions ALTER COLUMN merge_request_id SET DEF ALTER TABLE ONLY merge_request_requested_changes ALTER COLUMN id SET DEFAULT nextval('merge_request_requested_changes_id_seq'::regclass); -ALTER TABLE ONLY merge_request_review_llm_summaries ALTER COLUMN id SET DEFAULT nextval('merge_request_review_llm_summaries_id_seq'::regclass); - ALTER TABLE ONLY merge_request_reviewers ALTER COLUMN id SET DEFAULT nextval('merge_request_reviewers_id_seq'::regclass); ALTER TABLE ONLY merge_request_user_mentions ALTER COLUMN id SET DEFAULT nextval('merge_request_user_mentions_id_seq'::regclass); @@ -23331,9 +23305,6 @@ ALTER TABLE ONLY merge_request_predictions ALTER TABLE ONLY merge_request_requested_changes ADD CONSTRAINT merge_request_requested_changes_pkey PRIMARY KEY (id); -ALTER TABLE ONLY merge_request_review_llm_summaries - ADD CONSTRAINT merge_request_review_llm_summaries_pkey PRIMARY KEY (id); - ALTER TABLE ONLY merge_request_reviewers ADD CONSTRAINT merge_request_reviewers_pkey PRIMARY KEY (id); @@ -27845,14 +27816,6 @@ CREATE INDEX index_merge_request_requested_changes_on_project_id ON merge_reques CREATE INDEX index_merge_request_requested_changes_on_user_id ON merge_request_requested_changes USING btree (user_id); -CREATE INDEX index_merge_request_review_llm_summaries_on_mr_diff_id ON merge_request_review_llm_summaries USING btree (merge_request_diff_id); - -CREATE INDEX index_merge_request_review_llm_summaries_on_project_id ON merge_request_review_llm_summaries USING btree (project_id); - -CREATE INDEX index_merge_request_review_llm_summaries_on_review_id ON merge_request_review_llm_summaries USING btree (review_id); - -CREATE INDEX index_merge_request_review_llm_summaries_on_user_id ON merge_request_review_llm_summaries USING btree (user_id); - CREATE UNIQUE INDEX index_merge_request_reviewers_on_merge_request_id_and_user_id ON merge_request_reviewers USING btree (merge_request_id, user_id); CREATE INDEX index_merge_request_reviewers_on_project_id ON merge_request_reviewers USING btree (project_id); @@ -31737,8 +31700,6 @@ CREATE TRIGGER trigger_9699ea03bb37 BEFORE INSERT OR UPDATE ON related_epic_link CREATE TRIGGER trigger_96a76ee9f147 BEFORE INSERT OR UPDATE ON design_management_versions FOR EACH ROW EXECUTE FUNCTION trigger_96a76ee9f147(); -CREATE TRIGGER trigger_98ad3a4c1d35 BEFORE INSERT OR UPDATE ON merge_request_review_llm_summaries FOR EACH ROW EXECUTE FUNCTION trigger_98ad3a4c1d35(); - CREATE TRIGGER trigger_9e137c16de79 BEFORE INSERT OR UPDATE ON vulnerability_findings_remediations FOR EACH ROW EXECUTE FUNCTION trigger_9e137c16de79(); CREATE TRIGGER trigger_9f3745f8fe32 BEFORE INSERT OR UPDATE ON merge_requests_closing_issues FOR EACH ROW EXECUTE FUNCTION trigger_9f3745f8fe32(); @@ -32355,9 +32316,6 @@ ALTER TABLE ONLY user_achievements ALTER TABLE ONLY merge_requests ADD CONSTRAINT fk_6149611a04 FOREIGN KEY (assignee_id) REFERENCES users(id) ON DELETE SET NULL; -ALTER TABLE ONLY merge_request_review_llm_summaries - ADD CONSTRAINT fk_6154a9cb89 FOREIGN KEY (review_id) REFERENCES reviews(id) ON DELETE CASCADE; - ALTER TABLE ONLY member_approvals ADD CONSTRAINT fk_619f381144 FOREIGN KEY (member_role_id) REFERENCES member_roles(id) ON DELETE SET NULL; @@ -32616,9 +32574,6 @@ ALTER TABLE ONLY releases ALTER TABLE ONLY protected_tags ADD CONSTRAINT fk_8e4af87648 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; -ALTER TABLE ONLY merge_request_review_llm_summaries - ADD CONSTRAINT fk_8ec009c6ab FOREIGN KEY (merge_request_diff_id) REFERENCES merge_request_diffs(id) ON DELETE CASCADE; - ALTER TABLE ONLY audit_events_streaming_group_namespace_filters ADD CONSTRAINT fk_8ed182d7da FOREIGN KEY (external_streaming_destination_id) REFERENCES audit_events_group_external_streaming_destinations(id) ON DELETE CASCADE; @@ -32703,9 +32658,6 @@ ALTER TABLE ONLY protected_branch_push_access_levels ALTER TABLE ONLY deployment_merge_requests ADD CONSTRAINT fk_a064ff4453 FOREIGN KEY (environment_id) REFERENCES environments(id) ON DELETE CASCADE; -ALTER TABLE ONLY merge_request_review_llm_summaries - ADD CONSTRAINT fk_a09309bbeb FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; - ALTER TABLE ONLY issues ADD CONSTRAINT fk_a194299be1 FOREIGN KEY (moved_to_id) REFERENCES issues(id) ON DELETE SET NULL; @@ -33015,9 +32967,6 @@ ALTER TABLE ONLY custom_emoji ALTER TABLE ONLY bulk_import_entities ADD CONSTRAINT fk_d06d023c30 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; -ALTER TABLE ONLY merge_request_review_llm_summaries - ADD CONSTRAINT fk_d07eeb6392 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; - ALTER TABLE ONLY project_mirror_data ADD CONSTRAINT fk_d1aad367d7 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; diff --git a/ee/app/models/ee/merge_request_diff.rb b/ee/app/models/ee/merge_request_diff.rb index 9a0d2efce06e3e18de288d22e4d783d21580dc00..7fb2b9298656c82cb6080428a335ee273de7df4e 100644 --- a/ee/app/models/ee/merge_request_diff.rb +++ b/ee/app/models/ee/merge_request_diff.rb @@ -16,7 +16,6 @@ module MergeRequestDiff with_replicator ::Geo::MergeRequestDiffReplicator has_one :merge_request_diff_detail, autosave: false, inverse_of: :merge_request_diff - has_many :merge_request_review_llm_summaries, class_name: 'MergeRequest::ReviewLlmSummary' after_save :save_verification_details diff --git a/ee/app/models/ee/review.rb b/ee/app/models/ee/review.rb deleted file mode 100644 index fa48aa0c9cc5117617b0ee9341a79828e5416a39..0000000000000000000000000000000000000000 --- a/ee/app/models/ee/review.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -module EE - module Review - extend ActiveSupport::Concern - - prepended do - has_one :merge_request_review_llm_summary, class_name: 'MergeRequest::ReviewLlmSummary' - end - end -end diff --git a/ee/app/models/merge_request/review_llm_summary.rb b/ee/app/models/merge_request/review_llm_summary.rb deleted file mode 100644 index adabd13016ac5de6732121a0bb12ed1d615bd385..0000000000000000000000000000000000000000 --- a/ee/app/models/merge_request/review_llm_summary.rb +++ /dev/null @@ -1,24 +0,0 @@ -# rubocop:disable Style/ClassAndModuleChildren -# frozen_string_literal: true - -class MergeRequest::ReviewLlmSummary < ApplicationRecord - include CacheMarkdownField - - cache_markdown_field :content, issuable_reference_expansion_enabled: true - - belongs_to :review - belongs_to :merge_request_diff - belongs_to :user, optional: true - - validates :provider, presence: true - validates :content, presence: true, length: { maximum: 2056 } - - enum provider: { open_ai: 0, vertex_ai: 1 } - - scope :from_reviewer, ->(reviewer) { joins(:review).where(review: { author_id: reviewer.id }) } - - def reviewer - review.author - end -end -# rubocop:enable Style/ClassAndModuleChildren diff --git a/ee/spec/factories/merge_request_review_llm_summary.rb b/ee/spec/factories/merge_request_review_llm_summary.rb deleted file mode 100644 index 217661e69acd200a354d58ff5ff093a06dd3a9a5..0000000000000000000000000000000000000000 --- a/ee/spec/factories/merge_request_review_llm_summary.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -FactoryBot.define do - factory :merge_request_review_llm_summary, class: 'MergeRequest::ReviewLlmSummary' do - association :user, factory: :user - association :merge_request_diff, factory: :merge_request_diff - review { association :review, merge_request: merge_request_diff.merge_request } - provider { 0 } - content { FFaker::Lorem.sentence } - end -end diff --git a/ee/spec/models/ee/review_spec.rb b/ee/spec/models/ee/review_spec.rb deleted file mode 100644 index fce8a253108ad433b1662f096def28d25fb89fed..0000000000000000000000000000000000000000 --- a/ee/spec/models/ee/review_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Review, feature_category: :code_review_workflow do - describe 'associations' do - it { is_expected.to have_one(:merge_request_review_llm_summary).class_name('MergeRequest::ReviewLlmSummary') } - end -end diff --git a/ee/spec/models/merge_request/review_llm_summary_spec.rb b/ee/spec/models/merge_request/review_llm_summary_spec.rb deleted file mode 100644 index 282a95dd9579452938dad69df678f260cbcb3d40..0000000000000000000000000000000000000000 --- a/ee/spec/models/merge_request/review_llm_summary_spec.rb +++ /dev/null @@ -1,33 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe ::MergeRequest::ReviewLlmSummary, feature_category: :code_review_workflow do - subject(:merge_request_review_llm_summary) { build(:merge_request_review_llm_summary) } - - describe 'associations' do - it { is_expected.to belong_to(:merge_request_diff) } - it { is_expected.to belong_to(:review) } - it { is_expected.to belong_to(:user).optional } - it { is_expected.to validate_presence_of(:content) } - it { is_expected.to validate_length_of(:content).is_at_most(2056) } - it { is_expected.to validate_presence_of(:provider) } - end - - describe '.from_reviewer' do - let(:review_1) { create(:review) } - let(:review_2) { create(:review) } - let!(:review_llm_summary_1) { create(:merge_request_review_llm_summary, review: review_1) } - let!(:review_llm_summary_2) { create(:merge_request_review_llm_summary, review: review_2) } - - it 'returns review LLM summaries that were generated for the reviews from the reviewer' do - expect(described_class.from_reviewer(review_1.author)).to eq([review_llm_summary_1]) - end - end - - describe '#reviewer' do - it 'returns author of associated review' do - expect(merge_request_review_llm_summary.reviewer).to eq(merge_request_review_llm_summary.review.author) - end - end -end diff --git a/spec/lib/gitlab/background_migration/backfill_merge_request_review_llm_summaries_project_id_spec.rb b/spec/lib/gitlab/background_migration/backfill_merge_request_review_llm_summaries_project_id_spec.rb deleted file mode 100644 index 578f87bf59105723068e032d855fdf8f1410dc8e..0000000000000000000000000000000000000000 --- a/spec/lib/gitlab/background_migration/backfill_merge_request_review_llm_summaries_project_id_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Gitlab::BackgroundMigration::BackfillMergeRequestReviewLlmSummariesProjectId, - feature_category: :code_review_workflow, - schema: 20240613154055 do - include_examples 'desired sharding key backfill job' do - let(:batch_table) { :merge_request_review_llm_summaries } - let(:backfill_column) { :project_id } - let(:backfill_via_table) { :reviews } - let(:backfill_via_column) { :project_id } - let(:backfill_via_foreign_key) { :review_id } - end -end diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml index 8dbe68ff9a72fb87c92e1794ac880acd646b20e7..c90237e95931e6a5047ac978c54d89c61c41493e 100644 --- a/spec/lib/gitlab/import_export/all_models.yml +++ b/spec/lib/gitlab/import_export/all_models.yml @@ -276,7 +276,6 @@ merge_request_diff: - merge_request_diff_detail - merge_request_diff_files - merge_request_diff_llm_summary -- merge_request_review_llm_summaries merge_request_diff_commits: - merge_request_diff - commit_author diff --git a/spec/migrations/20240613154059_queue_backfill_merge_request_review_llm_summaries_project_id_spec.rb b/spec/migrations/20240613154059_queue_backfill_merge_request_review_llm_summaries_project_id_spec.rb deleted file mode 100644 index 722a9194f136694dc6f488681f3178976ee4a4dc..0000000000000000000000000000000000000000 --- a/spec/migrations/20240613154059_queue_backfill_merge_request_review_llm_summaries_project_id_spec.rb +++ /dev/null @@ -1,33 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' -require_migration! - -RSpec.describe QueueBackfillMergeRequestReviewLlmSummariesProjectId, feature_category: :code_review_workflow do - let!(:batched_migration) { described_class::MIGRATION } - - it 'schedules a new batched migration' do - reversible_migration do |migration| - migration.before -> { - expect(batched_migration).not_to have_scheduled_batched_migration - } - - migration.after -> { - expect(batched_migration).to have_scheduled_batched_migration( - table_name: :merge_request_review_llm_summaries, - column_name: :id, - interval: described_class::DELAY_INTERVAL, - batch_size: described_class::BATCH_SIZE, - sub_batch_size: described_class::SUB_BATCH_SIZE, - gitlab_schema: :gitlab_main_cell, - job_arguments: [ - :project_id, - :reviews, - :project_id, - :review_id - ] - ) - } - end - end -end diff --git a/spec/migrations/db/post_migrate/20240703134651_finalize_backfill_merge_request_review_llm_summaries_project_id_spec.rb b/spec/migrations/db/post_migrate/20240703134651_finalize_backfill_merge_request_review_llm_summaries_project_id_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..c14166b7fed7c22e529d9deb7421d2ce70189050 --- /dev/null +++ b/spec/migrations/db/post_migrate/20240703134651_finalize_backfill_merge_request_review_llm_summaries_project_id_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_migration! + +RSpec.describe FinalizeBackfillMergeRequestReviewLlmSummariesProjectId, feature_category: :database do + describe '#up' do + it 'ensures the migration is completed for self-managed instances' do + # enqueue the migration + QueueBackfillMergeRequestReviewLlmSummariesProjectId.new.up + + migration = Gitlab::Database::BackgroundMigration::BatchedMigration.where( + job_class_name: 'BackfillMergeRequestReviewLlmSummariesProjectId', + table_name: 'merge_request_review_llm_summaries' + ).first + + expect(migration.status).not_to eq(6) # finalized + + migrate! + + expect(migration.reload.status).to eq(6) + QueueBackfillMergeRequestReviewLlmSummariesProjectId.new.down + end + end +end