Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'db/migrate/20180413022611_create_missing_namespace_for_internal_users.rb')
-rw-r--r--db/migrate/20180413022611_create_missing_namespace_for_internal_users.rb66
1 files changed, 0 insertions, 66 deletions
diff --git a/db/migrate/20180413022611_create_missing_namespace_for_internal_users.rb b/db/migrate/20180413022611_create_missing_namespace_for_internal_users.rb
deleted file mode 100644
index 21d7f50ee83..00000000000
--- a/db/migrate/20180413022611_create_missing_namespace_for_internal_users.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-class CreateMissingNamespaceForInternalUsers < ActiveRecord::Migration[4.2]
- DOWNTIME = false
-
- def up
- connection.exec_query(users_query.to_sql).rows.each do |id, username|
- create_namespace(id, username)
- # When testing locally I've noticed that these internal users are missing
- # the notification email, for more details visit the below link:
- # https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/18357#note_68327560
- set_notification_email(id)
- end
- end
-
- def down
- # no-op
- end
-
- private
-
- def users
- @users ||= Arel::Table.new(:users)
- end
-
- def namespaces
- @namespaces ||= Arel::Table.new(:namespaces)
- end
-
- def users_query
- condition = users[:ghost].eq(true)
-
- if column_exists?(:users, :support_bot)
- condition = condition.or(users[:support_bot].eq(true))
- end
-
- users.join(namespaces, Arel::Nodes::OuterJoin)
- .on(namespaces[:type].eq(nil).and(namespaces[:owner_id].eq(users[:id])))
- .where(namespaces[:owner_id].eq(nil))
- .where(condition)
- .project(users[:id], users[:username])
- end
-
- def create_namespace(user_id, username)
- path = Uniquify.new.string(username) do |str|
- query = "SELECT id FROM namespaces WHERE parent_id IS NULL AND path='#{str}' LIMIT 1"
- connection.exec_query(query).present?
- end
-
- insert_query = "INSERT INTO namespaces(owner_id, path, name, created_at, updated_at) VALUES(#{user_id}, '#{path}', '#{path}', NOW(), NOW())"
- namespace_id = connection.insert(insert_query)
-
- create_route(namespace_id)
- end
-
- def create_route(namespace_id)
- return unless namespace_id
-
- row = connection.exec_query("SELECT id, path FROM namespaces WHERE id=#{namespace_id}").first
- id, path = row.values_at('id', 'path')
-
- execute("INSERT INTO routes(source_id, source_type, path, name, created_at, updated_at) VALUES(#{id}, 'Namespace', '#{path}', '#{path}', NOW(), NOW())")
- end
-
- def set_notification_email(user_id)
- execute "UPDATE users SET notification_email = email WHERE notification_email IS NULL AND id = #{user_id}"
- end
-end