Module: Gitlab::DatabaseImporters::WorkItems::HierarchyRestrictionsImporter

Defined in:
lib/gitlab/database_importers/work_items/hierarchy_restrictions_importer.rb

Class Method Summary collapse

Class Method Details

.find_or_create_type(name) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/gitlab/database_importers/work_items/hierarchy_restrictions_importer.rb', line 32

def self.find_or_create_type(name)
  type = ::WorkItems::Type.find_by_name_and_namespace_id(name, nil)
  return type if type

  Gitlab::DatabaseImporters::WorkItems::BaseTypeImporter.upsert_types
  ::WorkItems::Type.find_by_name_and_namespace_id(name, nil)
end

.upsert_restrictionsObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/gitlab/database_importers/work_items/hierarchy_restrictions_importer.rb', line 7

def self.upsert_restrictions
  objective = find_or_create_type(::WorkItems::Type::TYPE_NAMES[:objective])
  key_result = find_or_create_type(::WorkItems::Type::TYPE_NAMES[:key_result])
  issue = find_or_create_type(::WorkItems::Type::TYPE_NAMES[:issue])
  task = find_or_create_type(::WorkItems::Type::TYPE_NAMES[:task])
  incident = find_or_create_type(::WorkItems::Type::TYPE_NAMES[:incident])
  epic = find_or_create_type(::WorkItems::Type::TYPE_NAMES[:epic])
  ticket = find_or_create_type(::WorkItems::Type::TYPE_NAMES[:ticket])

  restrictions = [
    { parent_type_id: objective.id, child_type_id: objective.id, maximum_depth: 9 },
    { parent_type_id: objective.id, child_type_id: key_result.id, maximum_depth: 1 },
    { parent_type_id: issue.id, child_type_id: task.id, maximum_depth: 1 },
    { parent_type_id: incident.id, child_type_id: task.id, maximum_depth: 1 },
    { parent_type_id: epic.id, child_type_id: epic.id, maximum_depth: 9 },
    { parent_type_id: epic.id, child_type_id: issue.id, maximum_depth: 1 },
    { parent_type_id: ticket.id, child_type_id: task.id, maximum_depth: 1 }
  ]

  ::WorkItems::HierarchyRestriction.upsert_all(
    restrictions,
    unique_by: :index_work_item_hierarchy_restrictions_on_parent_and_child
  )
end