Class: Predefined::Query
Defined Under Namespace
Classes: Error, MissingTemplateError
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#select_all, #select_object, #select_objects, #select_one, #select_rows, #select_value, #select_values, #to_sql
Constructor Details
#initialize(name, options = {}) ⇒ Query
Returns a new instance of Query.
49
50
51
52
|
# File 'lib/predefined/query.rb', line 49
def initialize(name, options={})
@name = name
@options = options
end
|
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
9
10
11
|
# File 'lib/predefined/query.rb', line 9
def name
@name
end
|
Class Method Details
45
46
47
|
# File 'lib/predefined/query.rb', line 45
def self.format_query(sql)
sql.to_s.split(/\n/).map(&:strip).join(' ')
end
|
.template(name) ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/predefined/query.rb', line 25
def self.template(name)
@template ||= begin
template_paths.each do |path|
file = template_file(path, name)
if File.exists?(file)
return format_query(File.read(file))
end
end
template_missing(name)
end
end
|
.template_file(path, name) ⇒ Object
37
38
39
|
# File 'lib/predefined/query.rb', line 37
def self.template_file(path, name)
File.join(path, "#{name}.sql")
end
|
.template_missing(name) ⇒ Object
41
42
43
|
# File 'lib/predefined/query.rb', line 41
def self.template_missing(name)
raise MissingTemplateError.new("Could not find template for query #{name.inspect} in #{template_paths.inspect}")
end
|
.template_paths ⇒ Object
11
12
13
14
15
16
17
18
19
|
# File 'lib/predefined/query.rb', line 11
def self.template_paths
if defined? @template_paths
@template_paths
elsif superclass.respond_to?(:template_paths)
superclass.template_paths
else
@template_paths ||= []
end
end
|
.template_paths=(paths) ⇒ Object
21
22
23
|
# File 'lib/predefined/query.rb', line 21
def self.template_paths=(paths)
@template_paths = Array(paths)
end
|
Instance Method Details
#template ⇒ Object
54
55
56
|
# File 'lib/predefined/query.rb', line 54
def template
self.class.template(name)
end
|