class Netfira::WebConnect::Schema::Table

Constants

IGNORE_COLUMNS
IGNORE_L10N_COLUMNS

Attributes

klass[R]

Public Class Methods

new(klass) click to toggle source
# File lib/netfira/web_connect/schema/table.rb, line 7
def initialize(klass)
  @klass = klass
end

Public Instance Methods

as_json(options) click to toggle source
# File lib/netfira/web_connect/schema/table.rb, line 45
def as_json(options)
  @json ||= {
      columns:    columns.map { |name, type| [name.to_s.camelize(:lower), type] }.to_h,
      relations:  relations.map{ |klass| klass.name.demodulize.pluralize },
      singular:   singular,
      primaryKey: [primary_key.to_s.camelize(:lower)],
      localize:   l10n_columns.keys.map{ |k| k.camelize :lower },
      hasMany:   has_many.map{ |type, klass| [type, klass.plural_name.camelize] }.to_h
  }
end
columns() click to toggle source
# File lib/netfira/web_connect/schema/table.rb, line 41
def columns
  @columns ||= klass.columns_hash.reject{ |k| IGNORE_COLUMNS.include? k }.merge(l10n_columns).map{ |k, v| [k.to_sym, v.type.to_s] }.to_h
end
has_many() click to toggle source
# File lib/netfira/web_connect/schema/table.rb, line 31
def has_many
  @has_many ||= klass.reflect_on_all_associations(:has_many).select do |a|
    a.klass < Model::Record && !a.options[:through]
  end.map do |association|
    [association.name, association.klass]
  end.to_h
end
localize() click to toggle source
# File lib/netfira/web_connect/schema/table.rb, line 23
def localize
  @localize ||= l10n_columns.keys.map(&:to_sym)
end
plural() click to toggle source
# File lib/netfira/web_connect/schema/table.rb, line 15
def plural
  @plural ||= singular.pluralize
end
primary_key() click to toggle source
# File lib/netfira/web_connect/schema/table.rb, line 19
def primary_key
  @primary_key ||= klass.origin_key
end
relations() click to toggle source
# File lib/netfira/web_connect/schema/table.rb, line 27
def relations
  @relations = klass.related_classes
end
singular() click to toggle source
# File lib/netfira/web_connect/schema/table.rb, line 11
def singular
  @singular ||= klass.name.demodulize
end

Private Instance Methods

l10n_columns() click to toggle source
# File lib/netfira/web_connect/schema/table.rb, line 58
def l10n_columns
  @l10n_columns ||= klass.has_languages? ? l10n_filtered_columns_hash : {}
end
l10n_filtered_columns_hash() click to toggle source
# File lib/netfira/web_connect/schema/table.rb, line 64
def l10n_filtered_columns_hash
  klass::Translation.columns_hash.reject do |k|
    k == "#{klass.single_name}_id" or IGNORE_L10N_COLUMNS.include? k
  end
end