summaryrefslogtreecommitdiff
path: root/doc/development/reusing_abstractions.md
diff options
context:
space:
mode:
authorFilipa Lacerda <filipa@gitlab.com>2019-07-03 22:39:10 +0100
committerFilipa Lacerda <filipa@gitlab.com>2019-07-03 22:39:10 +0100
commit50be7237f41b0ac44b9aaf8b73c57993548d4c35 (patch)
treeecfeeae58829dadbd90de4f834c730d1d8c55e74 /doc/development/reusing_abstractions.md
parent35331c435196ea1155eb15161f3f9a481a01501d (diff)
parent2ad75a4f96c4d377e18788966e7eefee4d78b6d2 (diff)
downloadgitlab-ce-update-todo-in-ui.tar.gz
Merge branch 'master' into update-todo-in-uiupdate-todo-in-ui
* master: (435 commits) Change occurrence of Sidekiq::Testing.inline! Fix order-dependent spec failure in appearance_spec.rb Put a failed example from appearance_spec in quarantine Cache PerformanceBar.allowed_user_ids list locally and in Redis Add Grafana to Admin > Monitoring menu when enabled Add changelog entry Add salesforce logo Move error_tracking_frontend specs to Jest Only save Peek session in Redis when Peek is enabled Migrate markdown header_spec.js to Jest Fix golint command in Go guide doc to be recursive Move images to their own dirs Gitlab -> GitLab Re-align CE and EE API docs Rename Release groups in issue_workflow.md Update api docs to finish aligning EE and CE docs Update locale.pot Update TODO: allow_collaboration column renaming Show upcoming status for releases Rebased and squashed commits ...
Diffstat (limited to 'doc/development/reusing_abstractions.md')
-rw-r--r--doc/development/reusing_abstractions.md36
1 files changed, 36 insertions, 0 deletions
diff --git a/doc/development/reusing_abstractions.md b/doc/development/reusing_abstractions.md
index 01cedf734fb..59da02ed6fd 100644
--- a/doc/development/reusing_abstractions.md
+++ b/doc/development/reusing_abstractions.md
@@ -127,6 +127,42 @@ Everything in `lib/api`.
Everything that resides in `app/services`.
+#### ServiceResponse
+
+Service classes usually have an `execute` method, which can return a
+`ServiceResponse`. You can use `ServiceResponse.success` and
+`ServiceResponse.error` to return a response in `execute` method.
+
+In a successful case:
+
+``` ruby
+response = ServiceResponse.success(message: 'Branch was deleted')
+
+response.success? # => true
+response.error? # => false
+response.status # => :success
+response.message # => 'Branch was deleted'
+```
+
+In a failed case:
+
+``` ruby
+response = ServiceResponse.error(message: 'Unsupported operation')
+
+response.success? # => false
+response.error? # => true
+response.status # => :error
+response.message # => 'Unsupported operation'
+```
+
+An additional payload can also be attached:
+
+``` ruby
+response = ServiceResponse.success(payload: { issue: issue })
+
+response.payload[:issue] # => issue
+```
+
### Finders
Everything in `app/finders`, typically used for retrieving data from a database.