Module: ClosureTree::SupportAttributes

Extended by:
Forwardable
Included in:
Support
Defined in:
lib/closure_tree/support_attributes.rb

Instance Method Summary collapse

Instance Method Details

#advisory_lock_nameObject



7
8
9
# File 'lib/closure_tree/support_attributes.rb', line 7

def advisory_lock_name
  Digest::SHA1.hexdigest("ClosureTree::#{base_class.name}")[0..32]
end

#dont_order_rootsObject



78
79
80
# File 'lib/closure_tree/support_attributes.rb', line 78

def dont_order_roots
  options[:dont_order_roots] || false
end

#hierarchy_class_nameObject



19
20
21
# File 'lib/closure_tree/support_attributes.rb', line 19

def hierarchy_class_name
  options[:hierarchy_class_name] || model_class.to_s + "Hierarchy"
end

#name_columnObject



39
40
41
# File 'lib/closure_tree/support_attributes.rb', line 39

def name_column
  options[:name_column]
end

#name_symObject



43
44
45
# File 'lib/closure_tree/support_attributes.rb', line 43

def name_sym
  name_column.to_sym
end

#nulls_last_order_byObject



82
83
84
# File 'lib/closure_tree/support_attributes.rb', line 82

def nulls_last_order_by
  Arel.sql "-#{quoted_order_column} #{order_by_order(true)}"
end

#order_byObject



74
75
76
# File 'lib/closure_tree/support_attributes.rb', line 74

def order_by
  options[:order]
end

#order_by_order(reverse = false) ⇒ Object



86
87
88
89
90
# File 'lib/closure_tree/support_attributes.rb', line 86

def order_by_order(reverse = false)
  desc = !!(order_by.to_s =~ /DESC\z/)
  desc = !desc if reverse
  desc ? 'DESC' : 'ASC'
end

#order_columnObject



92
93
94
95
96
97
98
99
100
101
# File 'lib/closure_tree/support_attributes.rb', line 92

def order_column
  o = order_by
  if o.nil?
    nil
  elsif o.is_a?(String)
    o.split(' ', 2).first
  else
    o.to_s
  end
end

#order_column_symObject



107
108
109
110
# File 'lib/closure_tree/support_attributes.rb', line 107

def order_column_sym
  require_order_column
  order_column.to_sym
end

#parent_column_nameObject



31
32
33
# File 'lib/closure_tree/support_attributes.rb', line 31

def parent_column_name
  options[:parent_column_name]
end

#parent_column_symObject



35
36
37
# File 'lib/closure_tree/support_attributes.rb', line 35

def parent_column_sym
  parent_column_name.to_sym
end

#primary_key_columnObject



23
24
25
# File 'lib/closure_tree/support_attributes.rb', line 23

def primary_key_column
  model_class.columns.detect { |ea| ea.name == model_class.primary_key }
end

#primary_key_typeObject



27
28
29
# File 'lib/closure_tree/support_attributes.rb', line 27

def primary_key_type
  primary_key_column.type
end

#quoted_hierarchy_table_nameObject



58
59
60
# File 'lib/closure_tree/support_attributes.rb', line 58

def quoted_hierarchy_table_name
  connection.quote_table_name hierarchy_table_name
end

#quoted_id_column_nameObject



62
63
64
# File 'lib/closure_tree/support_attributes.rb', line 62

def quoted_id_column_name
  connection.quote_column_name model_class.primary_key
end

#quoted_name_columnObject



70
71
72
# File 'lib/closure_tree/support_attributes.rb', line 70

def quoted_name_column
  connection.quote_column_name name_column
end

#quoted_order_column(include_table_name = true) ⇒ Object



112
113
114
115
116
# File 'lib/closure_tree/support_attributes.rb', line 112

def quoted_order_column(include_table_name = true)
  require_order_column
  prefix = include_table_name ? "#{quoted_table_name}." : ""
  "#{prefix}#{connection.quote_column_name(order_column)}"
end

#quoted_parent_column_nameObject



66
67
68
# File 'lib/closure_tree/support_attributes.rb', line 66

def quoted_parent_column_name
  connection.quote_column_name parent_column_name
end

#quoted_table_nameObject



11
12
13
# File 'lib/closure_tree/support_attributes.rb', line 11

def quoted_table_name
  connection.quote_table_name(table_name)
end

#quoted_value(value) ⇒ Object



15
16
17
# File 'lib/closure_tree/support_attributes.rb', line 15

def quoted_value(value)
  value.is_a?(Numeric) ? value : quote(value)
end

#require_order_columnObject



103
104
105
# File 'lib/closure_tree/support_attributes.rb', line 103

def require_order_column
  raise ":order value, '#{options[:order]}', isn't a column" if order_column.nil?
end

#short_hierarchy_class_nameString

Returns the constant name of the hierarchy_class

Examples:

Namespace::Model.hierarchy_class_name # => "Namespace::ModelHierarchy"
Namespace::Model.short_hierarchy_class_name # => "ModelHierarchy"

Returns:

  • (String)

    the constant name



54
55
56
# File 'lib/closure_tree/support_attributes.rb', line 54

def short_hierarchy_class_name
  hierarchy_class_name.split('::').last
end

#t_alias_keywordObject

table_name alias keyword , like “AS”. When used on table name alias, Oracle Database don’t support used ‘AS’



119
120
121
# File 'lib/closure_tree/support_attributes.rb', line 119

def t_alias_keyword
  (ActiveRecord::Base.connection.adapter_name.to_sym == :OracleEnhanced) ? "" : "AS"
end