summaryrefslogtreecommitdiff
path: root/doc/development
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2019-06-24 17:24:25 +0000
committerAchilleas Pipinellis <axil@gitlab.com>2019-06-24 17:24:25 +0000
commitb32f7d489136e3172967f1031d5ca58aacd26cab (patch)
treee57c60f4fcc3c8c071f1a91bddfa656c943afcb1 /doc/development
parent7f6de7fe29c2731975166b1a864c5a5cf3141132 (diff)
downloadgitlab-ce-b32f7d489136e3172967f1031d5ca58aacd26cab.tar.gz
Add doc for ServiceResponse
Diffstat (limited to 'doc/development')
-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.