Class: BulkImports::Common::Pipelines::MembersPipeline

Inherits:
Object
  • Object
show all
Includes:
Pipeline
Defined in:
lib/bulk_imports/common/pipelines/members_pipeline.rb

Constant Summary

Constants included from Pipeline

Pipeline::CACHE_KEY_EXPIRATION, Pipeline::EMPTY_EXPORT_STATUS_TIMEOUT, Pipeline::ExpiredError, Pipeline::FailedError, Pipeline::NDJSON_EXPORT_TIMEOUT, Pipeline::NotAllowedError

Constants included from Pipeline::Runner

Pipeline::Runner::MarkedAsFailedError

Instance Method Summary collapse

Methods included from Pipeline

#current_user, #import_export_config, #initialize, #portable, #tracker

Methods included from Pipeline::Runner

#run

Instance Method Details

#extract(context) ⇒ Object



12
13
14
# File 'lib/bulk_imports/common/pipelines/members_pipeline.rb', line 12

def extract(context)
  graphql_extractor.extract(context)
end

#load(_context, data) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/bulk_imports/common/pipelines/members_pipeline.rb', line 16

def load(_context, data)
  return unless data

  user_id = data[:user_id]

  # Current user is already a member
  return if user_id == current_user.id

  user_membership = existing_user_membership(user_id)

  # User is already a member with higher existing (inherited) membership
  return if user_membership && user_membership[:access_level] >= data[:access_level]

  # Create new membership for any other access level
  portable.members.create!(data)
end