class JunglePath::DBModel::View
Attributes
create[R]
drop[R]
parameters[R]
pre_query_hook[R]
references[R]
Public Class Methods
new(create=nil, drop=nil, references=nil, parameters=nil, pre_query_hook=nil)
click to toggle source
# 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
Public Instance Methods
build_call(identity, table, from_clause_parameters=nil)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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