summaryrefslogtreecommitdiff
path: root/app/finders
diff options
context:
space:
mode:
authorTiago Botelho <tiagonbotelho@hotmail.com>2017-02-27 18:56:54 +0000
committerTiago Botelho <tiagonbotelho@hotmail.com>2017-03-01 13:11:11 +0000
commit2b474dc2b226460782413e634792cf83e791173b (patch)
treeaa4520aae3d0a1130a3349699a2e0c20f344aa39 /app/finders
parent9f2e4742e354f5548b4956060f1bfa5ee3bd6657 (diff)
downloadgitlab-ce-2b474dc2b226460782413e634792cf83e791173b.tar.gz
refactors finder and correlated code
Diffstat (limited to 'app/finders')
-rw-r--r--app/finders/personal_access_tokens_finder.rb56
1 files changed, 31 insertions, 25 deletions
diff --git a/app/finders/personal_access_tokens_finder.rb b/app/finders/personal_access_tokens_finder.rb
index ad3f7f4a437..7b9a2f6c0bb 100644
--- a/app/finders/personal_access_tokens_finder.rb
+++ b/app/finders/personal_access_tokens_finder.rb
@@ -1,41 +1,47 @@
class PersonalAccessTokensFinder
- def initialize(user, params = {})
- @user = user
+ attr_accessor :params
+
+ def initialize(params = {})
@params = params
end
- def execute
- pat_id = token_id?
- personal_access_tokens = @user.personal_access_tokens
- personal_access_tokens = personal_access_tokens.impersonation if impersonation?
+ def execute(token: nil, id: nil)
+ tokens = by_impersonation
- return find_token_by_id(personal_access_tokens, pat_id) if pat_id
+ return tokens.find_by_token(token) if token
+ return tokens.find_by_id(id) if id
- case state?
- when 'active'
- personal_access_tokens.active
- when 'inactive'
- personal_access_tokens.inactive
- else
- personal_access_tokens
- end
+ tokens = by_state(tokens)
+ tokens.order(@params[:order]) if @params[:order]
+
+ tokens
end
private
- def state?
- @params[:state].presence
- end
-
- def impersonation?
- @params[:impersonation].presence
+ def personal_access_tokens
+ @params[:user] ? @params[:user].personal_access_tokens : PersonalAccessToken.all
end
- def token_id?
- @params[:personal_access_token_id].presence
+ def by_impersonation
+ case @params[:impersonation]
+ when true
+ personal_access_tokens.with_impersonation
+ when false
+ personal_access_tokens.without_impersonation
+ else
+ personal_access_tokens
+ end
end
- def find_token_by_id(personal_access_tokens, pat_id)
- personal_access_tokens.find_by(id: pat_id)
+ def by_state(tokens)
+ case @params[:state]
+ when 'active'
+ tokens.active
+ when 'inactive'
+ tokens.inactive
+ else
+ tokens
+ end
end
end