module HQ::GraphQL::Ext::ActiveRecordExtensions::ClassMethods

Attributes

authorize_action[RW]
auto_load_associations[RW]
auto_load_attributes[RW]
auto_load_enums[RW]
model_name[RW]

Public Instance Methods

lazy_load(&block) click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 24
def lazy_load(&block)
  @lazy_load ||= []
  if block
    ::HQ::GraphQL.lazy_load(self)
    @lazy_load << block
  end
  @lazy_load
end
lazy_load!() click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 33
def lazy_load!
  lazy_load.shift.call while lazy_load.length > 0
  @lazy_load = nil
end
model_associations() click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 52
def model_associations
  model_associations = []
  enums = model_klass.reflect_on_all_associations.select { |a| is_enum?(a) }
  associatons = model_klass.reflect_on_all_associations - enums

  if auto_load_enums
    model_associations.concat(enums)
  end

  if auto_load_associations
    model_associations.concat(associatons)
  end

  model_associations.concat(added_associations.map { |association| association_from_model(association) }).uniq

  # validate removed_associations exist
  removed_associations.each { |association| association_from_model(association) }

  model_associations.reject { |a| removed_associations.include?(a.name.to_sym) }.sort_by(&:name)
end
model_columns() click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 38
def model_columns
  model_columns =
    if auto_load_attributes
      model_klass.columns
    else
      added_attributes.map { |attr| column_from_model(attr) }
    end

  # validate removed_attributes exist
  removed_attributes.each { |attr| column_from_model(attr) }

  model_columns.reject { |c| removed_attributes.include?(c.name.to_sym) }.sort_by(&:name)
end

Private Instance Methods

add_association(*associations)
Alias for: add_associations
add_associations(*associations) click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 91
def add_associations(*associations)
  validate_model!
  added_associations.concat associations.map(&:to_sym)
end
Also aliased as: add_association
add_attr(*attrs)
Alias for: add_attributes
add_attribute(*attrs)
Alias for: add_attributes
add_attributes(*attrs) click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 75
def add_attributes(*attrs)
  validate_model!
  added_attributes.concat attrs.map(&:to_sym)
end
Also aliased as: add_attribute, add_attrs, add_attr
add_attrs(*attrs)
Alias for: add_attributes
added_associations() click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 123
def added_associations
  @added_associations ||= []
end
added_attributes() click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 115
def added_attributes
  @added_attributes ||= []
end
association_from_model(association) click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 111
def association_from_model(association)
  model_klass.reflect_on_association(association) || raise(ActiveRecordError, ActiveRecordError::MISSING_ASSOC_MSG % { model: model_name, assoc: association })
end
camelize(name) click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 131
def camelize(name)
  name.to_s.camelize(:lower)
end
column_from_model(attr) click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 107
def column_from_model(attr)
  model_klass.columns_hash[attr.to_s] || raise(ActiveRecordError, ActiveRecordError::MISSING_ATTR_MSG % { model: model_name, attr: attr })
end
is_enum?(association) click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 135
def is_enum?(association)
  ::HQ::GraphQL.enums.include?(association.klass)
end
model_klass() click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 103
def model_klass
  @model_klass ||= model_name.constantize
end
remove_association(*associations)
Alias for: remove_associations
remove_associations(*associations) click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 97
def remove_associations(*associations)
  validate_model!
  removed_associations.concat associations.map(&:to_sym)
end
Also aliased as: remove_association
remove_attr(*attrs)
Alias for: remove_attributes
remove_attribute(*attrs)
Alias for: remove_attributes
remove_attributes(*attrs) click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 83
def remove_attributes(*attrs)
  validate_model!
  removed_attributes.concat attrs.map(&:to_sym)
end
remove_attrs(*attrs)
Alias for: remove_attributes
removed_associations() click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 127
def removed_associations
  @removed_associations ||= []
end
removed_attributes() click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 119
def removed_attributes
  @removed_attributes ||= []
end
validate_model!() click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 139
def validate_model!
  lazy_load do
    model_name || raise(ActiveRecordError, ActiveRecordError::MISSING_MODEL_MSG)
  end
end