diff --git a/lib/travis/api/v3/queries/organization.rb b/lib/travis/api/v3/queries/organization.rb index 0aabf285..1f46cc0c 100644 --- a/lib/travis/api/v3/queries/organization.rb +++ b/lib/travis/api/v3/queries/organization.rb @@ -7,7 +7,9 @@ module Travis::API::V3 raise WrongParams, 'missing organization.id'.freeze end - def sync + def sync(org = find) + user_query = Queries::User.new(params, main_type) + org.users.each { |user| user_query.sync(user) } end end end diff --git a/lib/travis/api/v3/queries/user.rb b/lib/travis/api/v3/queries/user.rb index 28529b35..455c1ff5 100644 --- a/lib/travis/api/v3/queries/user.rb +++ b/lib/travis/api/v3/queries/user.rb @@ -7,7 +7,11 @@ module Travis::API::V3 raise WrongParams, 'missing user.id'.freeze end - def sync(user = find) + def sync(user = find, force: false) + return false if user.syncing? and not force + perform_async(:sync_user, user) + user.update_column(:is_syncing, true) + true end end end diff --git a/lib/travis/api/v3/services/organization/sync.rb b/lib/travis/api/v3/services/organization/sync.rb index e69de29b..c39623cb 100644 --- a/lib/travis/api/v3/services/organization/sync.rb +++ b/lib/travis/api/v3/services/organization/sync.rb @@ -0,0 +1,7 @@ +module Travis::API::V3 + class Services::Organization::Sync < Service + def run! + query.sync if access_control.writable? find + end + end +end