Class: WorkItems::CreateService
- Inherits:
-
Issues::CreateService
- Object
- BaseContainerService
- IssuableBaseService
- Issues::BaseService
- Issues::CreateService
- WorkItems::CreateService
- Extended by:
- Gitlab::Utils::Override
- Includes:
- WidgetableService
- Defined in:
- app/services/work_items/create_service.rb
Constant Summary
Constants included from RateLimitedService
RateLimitedService::RateLimitedNotSetupError
Constants inherited from Issues::BaseService
Issues::BaseService::NO_REBALANCING_NEEDED
Constants included from Gitlab::Utils::UsageData
Gitlab::Utils::UsageData::DISTRIBUTED_HLL_FALLBACK, Gitlab::Utils::UsageData::FALLBACK, Gitlab::Utils::UsageData::HISTOGRAM_FALLBACK, Gitlab::Utils::UsageData::MAX_BUCKET_SIZE
Instance Attribute Summary
Attributes included from Issues::ResolveDiscussions
#discussion_to_resolve_id, #merge_request_to_resolve_discussions_of_iid
Attributes inherited from BaseContainerService
#container, #current_user, #group, #params, #project
Instance Method Summary collapse
- #before_create(work_item) ⇒ Object
- #execute ⇒ Object
-
#initialize(container:, perform_spam_check: true, current_user: nil, params: {}, widget_params: {}) ⇒ CreateService
constructor
A new instance of CreateService.
- #transaction_create(work_item) ⇒ Object
Methods included from Gitlab::Utils::Override
extended, extensions, included, method_added, override, prepended, queue_verification, verify!
Methods included from WidgetableService
#execute_widgets, #initialize_callbacks!, #widget_service, #widget_service_class
Methods inherited from Issues::CreateService
#after_create, #external_author, #handle_assignee_changes, #handle_changes, #resolve_discussions_with_issue
Methods included from Services::ReturnServiceResponses
Methods included from Issues::ResolveDiscussions
#discussions_to_resolve, #filter_resolve_discussion_params, #merge_request_to_resolve_discussions_of
Methods included from RateLimitedService
#execute_without_rate_limiting
Methods inherited from Issues::BaseService
#close_service, #hook_data, #rebalance_if_needed, #reopen_service
Methods included from Issues::IssueTypeHelpers
Methods included from IncidentManagement::UsageData
Methods included from Gitlab::Utils::UsageData
#add, #add_metric, #alt_usage_data, #average, #count, #distinct_count, #estimate_batch_distinct_count, #histogram, #maximum_id, #measure_duration, #minimum_id, #redis_usage_data, #sum, #track_usage_event, #with_finished_at, #with_metadata, #with_prometheus_client
Methods inherited from BaseContainerService
#group_container?, #namespace_container?, #project_container?, #project_group
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
Constructor Details
#initialize(container:, perform_spam_check: true, current_user: nil, params: {}, widget_params: {}) ⇒ CreateService
Returns a new instance of CreateService.
8 9 10 11 12 13 14 15 16 17 |
# File 'app/services/work_items/create_service.rb', line 8 def initialize(container:, perform_spam_check: true, current_user: nil, params: {}, widget_params: {}) super( container: container, current_user: current_user, params: params, perform_spam_check: perform_spam_check, build_service: ::WorkItems::BuildService.new(container: container, current_user: current_user, params: params) ) @widget_params = end |
Instance Method Details
#before_create(work_item) ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'app/services/work_items/create_service.rb', line 34 def before_create(work_item) ( work_item: work_item, callback: :before_create_callback, widget_params: @widget_params ) super end |
#execute ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'app/services/work_items/create_service.rb', line 19 def execute result = super return result if result.error? work_item = result[:issue] if work_item.valid? success(payload(work_item)) else error(work_item.errors., :unprocessable_entity, pass_back: payload(work_item)) end rescue ::WorkItems::Widgets::BaseService::WidgetError => e error(e., :unprocessable_entity) end |
#transaction_create(work_item) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 |
# File 'app/services/work_items/create_service.rb', line 44 def transaction_create(work_item) super.tap do |save_result| if save_result ( work_item: work_item, callback: :after_create_in_transaction, widget_params: @widget_params ) end end end |