Class: JunglePath::DBModel::View

Inherits:
Object
  • Object
show all
Defined in:
lib/jungle_path/db_model/view.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#createObject (readonly)

Returns the value of attribute create.



6
7
8
# File 'lib/jungle_path/db_model/view.rb', line 6

def create
  @create
end

#dropObject (readonly)

Returns the value of attribute drop.



6
7
8
# File 'lib/jungle_path/db_model/view.rb', line 6

def drop
  @drop
end

#parametersObject (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_hookObject (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

#referencesObject (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

Returns:

  • (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