diff --git a/.tool-versions b/.tool-versions index 78115053c..f2a971aa7 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -ruby 2.6.5 +ruby 3.2.2 diff --git a/lib/travis/api/v3/models/organization.rb b/lib/travis/api/v3/models/organization.rb index ff11a73f2..0511dddaf 100644 --- a/lib/travis/api/v3/models/organization.rb +++ b/lib/travis/api/v3/models/organization.rb @@ -9,6 +9,12 @@ class Models::Organization < Model has_preferences Models::OrganizationPreferences + scope :by_login, ->(login, provider) { where( + 'lower(login) = ? and lower(vcs_type) = ?'.freeze, + login.downcase, + provider.downcase + 'organization' + ).order("id DESC") } + after_initialize do ensure_preferences end diff --git a/lib/travis/api/v3/queries/organization.rb b/lib/travis/api/v3/queries/organization.rb index ec8679310..dd01c29df 100644 --- a/lib/travis/api/v3/queries/organization.rb +++ b/lib/travis/api/v3/queries/organization.rb @@ -5,11 +5,7 @@ class Queries::Organization < Query def find return Models::Organization.find_by_id(id) if id return Models::Organization.find_by(vcs_id: github_id) || Models::Organization.find_by(github_id: github_id) if github_id - return Models::Organization.where( - 'lower(login) = ? and lower(vcs_type) = ?'.freeze, - login.downcase, - provider.downcase + 'organization' - ).order("id DESC").first if login + return Models::Organization.by_login(login, provider).first if login raise WrongParams, 'missing organization.id or organization.login'.freeze end @@ -27,14 +23,14 @@ def active(value, from) def suspend(value) if params['vcs_type'] - raise WrongParams, 'missing user ids'.freeze unless params['vcs_ids']&.size > 0 + raise_missing_ids_unless('vcs_ids') - user_ids = Models::User.where("vcs_type = ? and vcs_id in (?)", vcs_type,params['vcs_ids']).all.map(&:id) - else - raise WrongParams, 'missing user ids'.freeze unless params['user_ids']&.size > 0 + user_ids = Models::User.where(vcs_type: vcs_type, vcs_id: params['vcs_ids']).pluck(:id) + else + raise_missing_ids_unless('user_ids') - user_ids = params['user_ids'] - end + user_ids = params['user_ids'] + end filtered_ids = filter_ids(user_ids) Models::User.where("id in (?)", filtered_ids).update!(suspended: value, suspended_at: value ? Time.now.utc : nil) @@ -49,18 +45,22 @@ def filter_ids(ids) end def vcs_type - @_vcs_type ||= - params['vcs_type'] ? - ( - params['vcs_type'].end_with?('User') ? - params['vcs_type'] : - "#{params['vcs_type'].capitalize}User" - ) - : 'GithubUser' + @_vcs_type ||= case + when params['vcs_type']&.end_with?('User') + params['vcs_type'] + when params['vcs_type'] + "#{params['vcs_type'].capitalize}User" + else + 'GithubUser' + end end private + def raise_missing_ids_unless(key) + raise WrongParams, 'missing user ids'.freeze unless params[key]&.size > 0 + end + def provider params['provider'] || 'github' end