From 2b474dc2b226460782413e634792cf83e791173b Mon Sep 17 00:00:00 2001 From: Tiago Botelho Date: Mon, 27 Feb 2017 18:56:54 +0000 Subject: refactors finder and correlated code --- app/finders/personal_access_tokens_finder.rb | 56 +++++++++++++++------------- 1 file changed, 31 insertions(+), 25 deletions(-) (limited to 'app/finders') 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 -- cgit v1.2.1