# File lib/netfira/web_connect/schema/table.rb, line 19 def primary_key @primary_key ||= klass.origin_key end
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
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