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