diff options
author | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2016-10-18 00:11:33 -0200 |
---|---|---|
committer | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2016-10-19 14:58:27 -0200 |
commit | 6c189dcc8e76d5ddb348832500b003bf0d1b49a6 (patch) | |
tree | 598cb637e1cddfa1ea74894ca78c610630adca94 /app/services | |
parent | 49ec98d1b2ca6f57f3f9434a0be0018fa5a53681 (diff) | |
download | gitlab-ce-6c189dcc8e76d5ddb348832500b003bf0d1b49a6.tar.gz |
Add service to create project labels
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/labels/create_service.rb | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/app/services/labels/create_service.rb b/app/services/labels/create_service.rb new file mode 100644 index 00000000000..bb475ce741d --- /dev/null +++ b/app/services/labels/create_service.rb @@ -0,0 +1,33 @@ +module Labels + class CreateService + def initialize(current_user, project, params = {}) + @current_user = current_user + @group = project.group + @project = project + @params = params.dup + end + + def execute + find_or_create_label + end + + private + + attr_reader :current_user, :group, :project, :params + + def available_labels + @available_labels ||= LabelsFinder.new(current_user, project_id: project.id).execute + end + + def find_or_create_label + new_label = available_labels.find_by(title: title) + new_label ||= project.labels.create(params) + + new_label + end + + def title + params[:title] || params[:name] + end + end +end |