Class: JunglePath::DBModel::View
- Inherits:
-
Object
- Object
- JunglePath::DBModel::View
- Defined in:
- lib/jungle_path/db_model/view.rb
Instance Attribute Summary collapse
-
#create ⇒ Object
readonly
Returns the value of attribute create.
-
#drop ⇒ Object
readonly
Returns the value of attribute drop.
-
#parameters ⇒ Object
readonly
Returns the value of attribute parameters.
-
#pre_query_hook ⇒ Object
readonly
Returns the value of attribute pre_query_hook.
-
#references ⇒ Object
readonly
Returns the value of attribute references.
Instance Method Summary collapse
- #build_call(identity, table, from_clause_parameters = nil) ⇒ Object
- #convert_to_parameter(value) ⇒ Object
- #has_reference_to?(table_name) ⇒ Boolean
-
#initialize(create = nil, drop = nil, references = nil, parameters = nil, pre_query_hook = nil) ⇒ View
constructor
A new instance of View.
- #run_pre_query_hook(identity, table, db, parameters = nil) ⇒ Object
Constructor Details
#initialize(create = nil, drop = nil, references = nil, parameters = nil, pre_query_hook = nil) ⇒ View
Returns a new instance of View.
7 8 9 10 11 12 13 14 15 |
# File 'lib/jungle_path/db_model/view.rb', line 7 def initialize create=nil, drop=nil, references=nil, parameters=nil, pre_query_hook=nil @create = create @drop = drop @references = references || [] @references = Set.new(@references) @parameters = parameters || [] @pre_query_hook = pre_query_hook puts "@pre_query_hook==nil ?: #{@pre_query_hook == nil}" end |
Instance Attribute Details
#create ⇒ Object (readonly)
Returns the value of attribute create.
6 7 8 |
# File 'lib/jungle_path/db_model/view.rb', line 6 def create @create end |
#drop ⇒ Object (readonly)
Returns the value of attribute drop.
6 7 8 |
# File 'lib/jungle_path/db_model/view.rb', line 6 def drop @drop end |
#parameters ⇒ Object (readonly)
Returns the value of attribute parameters.
6 7 8 |
# File 'lib/jungle_path/db_model/view.rb', line 6 def parameters @parameters end |
#pre_query_hook ⇒ Object (readonly)
Returns the value of attribute pre_query_hook.
6 7 8 |
# File 'lib/jungle_path/db_model/view.rb', line 6 def pre_query_hook @pre_query_hook end |
#references ⇒ Object (readonly)
Returns the value of attribute references.
6 7 8 |
# File 'lib/jungle_path/db_model/view.rb', line 6 def references @references end |
Instance Method Details
#build_call(identity, table, from_clause_parameters = nil) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/jungle_path/db_model/view.rb', line 19 def build_call(identity, table, from_clause_parameters=nil) # user identity parameters take precedence, then parameters coming with query. This prevents user supplied parameterss # from being used to set identity parameters! parameters = identity.alternative_user_keys.select{|k, v| @parameters.include?(k)}.values.map{|n| convert_to_parameter(n)} if from_clause_parameters and from_clause_parameters.length > 0 from_clause_parameters.each do |p| parameters << p end end parameters = parameters.join(', ') if parameters.length > 0 "#{table.table_name}(#{parameters})" else "#{table.table_name}" end end |
#convert_to_parameter(value) ⇒ Object
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/jungle_path/db_model/view.rb', line 38 def convert_to_parameter(value) return value if value.class == Fixnum return "'#{value}'" if value.class == String return value if value.class == Float return "'#{value.to_s}'::date'" if value.class == Date return "'#{value.to_time.utc}'::timestamp'" if value.class == DateTime return "'#{value.utc}'::timestamp'" if value.class == Time return value.to_s if value.class == TrueClass or value.class == FalseClass return "#{value}" end |
#has_reference_to?(table_name) ⇒ Boolean
16 17 18 |
# File 'lib/jungle_path/db_model/view.rb', line 16 def has_reference_to?(table_name) @references.member?(table_name) end |
#run_pre_query_hook(identity, table, db, parameters = nil) ⇒ Object
35 36 37 |
# File 'lib/jungle_path/db_model/view.rb', line 35 def run_pre_query_hook(identity, table, db, parameters=nil) @pre_query_hook.call(identity, table, db) if @pre_query_hook end |