summaryrefslogtreecommitdiff
path: root/db/migrate/20160705163108_remove_requesters_that_are_owners.rb
blob: 449c67e1b6abc3fdf03b224d1f983e6a3fa54216 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
class RemoveRequestersThatAreOwners < ActiveRecord::Migration[4.2]
  include Gitlab::Database::MigrationHelpers

  def up
    # Delete requesters that are owner of their projects and actually requested
    # access to it
    execute <<-SQL
      DELETE FROM members
      WHERE members.source_type = 'Project'
      AND members.type = 'ProjectMember'
      AND members.requested_at IS NOT NULL
      AND members.user_id = (
        SELECT namespaces.owner_id
        FROM namespaces
        JOIN projects ON namespaces.id = projects.namespace_id
        WHERE namespaces.type IS NULL
        AND projects.id = members.source_id
        AND namespaces.owner_id = members.user_id);
    SQL

    # Delete requesters that are owner of their project's group and actually requested
    # access to it
    execute <<-SQL
      DELETE FROM members
      WHERE members.source_type = 'Project'
      AND members.type = 'ProjectMember'
      AND members.requested_at IS NOT NULL
      AND members.user_id = (
        SELECT namespaces.owner_id
        FROM namespaces
        JOIN projects ON namespaces.id = projects.namespace_id
        WHERE namespaces.type = 'Group'
        AND projects.id = members.source_id
        AND namespaces.owner_id = members.user_id);
    SQL
  end

  def down
  end
end