Class: Releases::BaseService

Inherits:
Object
  • Object
show all
Includes:
BaseServiceUtility, Gitlab::Utils::StrongMemoize
Defined in:
app/services/releases/base_service.rb

Direct Known Subclasses

CreateService, DestroyService, UpdateService

Constant Summary collapse

ReleaseProtectedTagAccessError =
Class.new(StandardError)

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from BaseServiceUtility

#deny_visibility_level, #event_service, #log_error, #log_info, #notification_service, #system_hook_service, #todo_service, #visibility_level

Methods included from Gitlab::Allowable

#can?

Constructor Details

#initialize(project, user = nil, params = {}) ⇒ BaseService

Returns a new instance of BaseService.



12
13
14
15
16
# File 'app/services/releases/base_service.rb', line 12

def initialize(project, user = nil, params = {})
  @project = project
  @current_user = user
  @params = params.dup
end

Instance Attribute Details

#current_userObject

Returns the value of attribute current_user.



10
11
12
# File 'app/services/releases/base_service.rb', line 10

def current_user
  @current_user
end

#paramsObject

Returns the value of attribute params.



10
11
12
# File 'app/services/releases/base_service.rb', line 10

def params
  @params
end

#projectObject

Returns the value of attribute project.



10
11
12
# File 'app/services/releases/base_service.rb', line 10

def project
  @project
end

Instance Method Details

#descriptionObject



34
35
36
# File 'app/services/releases/base_service.rb', line 34

def description
  params[:description]
end

#execute_hooks(release, action = 'create') ⇒ Object



108
109
110
# File 'app/services/releases/base_service.rb', line 108

def execute_hooks(release, action = 'create')
  release.execute_hooks(action)
end

#existing_tagObject



54
55
56
57
58
# File 'app/services/releases/base_service.rb', line 54

def existing_tag
  strong_memoize(:existing_tag) do
    repository.find_tag(tag_name)
  end
end

#inexistent_milestone_idsObject



84
85
86
87
88
89
90
# File 'app/services/releases/base_service.rb', line 84

def inexistent_milestone_ids
  return [] unless param_for_milestone_ids_provided?

  existing_milestone_ids = milestones.map(&:id)

  Array(params[:milestone_ids]) - existing_milestone_ids
end

#inexistent_milestone_titlesObject



76
77
78
79
80
81
82
# File 'app/services/releases/base_service.rb', line 76

def inexistent_milestone_titles
  return [] unless param_for_milestone_titles_provided?

  existing_milestone_titles = milestones.map(&:title)

  Array(params[:milestones]) - existing_milestone_titles
end

#milestonesObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'app/services/releases/base_service.rb', line 60

def milestones
  return [] unless param_for_milestones_exists?

  strong_memoize(:milestones) do
    MilestonesFinder.new(
      project: project,
      current_user: current_user,
      project_ids: Array(project.id),
      group_ids: Array(project_group_id),
      state: 'all',
      title: params[:milestones],
      ids: params[:milestone_ids]
    ).execute
  end
end

#nameObject



30
31
32
# File 'app/services/releases/base_service.rb', line 30

def name
  params[:name] || tag_name
end

#param_for_milestone_ids_provided?Boolean

Returns:

  • (Boolean)


96
97
98
# File 'app/services/releases/base_service.rb', line 96

def param_for_milestone_ids_provided?
  !!params[:milestone_ids]
end

#param_for_milestone_titles_provided?Boolean

Returns:

  • (Boolean)


92
93
94
# File 'app/services/releases/base_service.rb', line 92

def param_for_milestone_titles_provided?
  !!params[:milestones]
end

#param_for_milestones_exists?Boolean

Returns:

  • (Boolean)


104
105
106
# File 'app/services/releases/base_service.rb', line 104

def param_for_milestones_exists?
  params[:milestones].present? || params[:milestone_ids].present?
end

#param_for_milestones_provided?Boolean

Returns:

  • (Boolean)


100
101
102
# File 'app/services/releases/base_service.rb', line 100

def param_for_milestones_provided?
  param_for_milestone_titles_provided? || param_for_milestone_ids_provided?
end

#project_group_idObject

overridden in EE



113
# File 'app/services/releases/base_service.rb', line 113

def project_group_id; end

#refObject



26
27
28
# File 'app/services/releases/base_service.rb', line 26

def ref
  params[:ref]
end

#releaseObject



42
43
44
45
46
# File 'app/services/releases/base_service.rb', line 42

def release
  strong_memoize(:release) do
    project.releases.find_by_tag(tag_name)
  end
end

#released_atObject



38
39
40
# File 'app/services/releases/base_service.rb', line 38

def released_at
  params[:released_at]
end

#repositoryObject



48
49
50
51
52
# File 'app/services/releases/base_service.rb', line 48

def repository
  strong_memoize(:repository) do
    project.repository
  end
end

#tag_messageObject



22
23
24
# File 'app/services/releases/base_service.rb', line 22

def tag_message
  params[:tag_message]
end

#tag_nameObject



18
19
20
# File 'app/services/releases/base_service.rb', line 18

def tag_name
  params[:tag]
end