Module: Squirrell
- Included in:
- ExampleQuery
- Defined in:
- lib/squirrell.rb,
lib/squirrell/version.rb
Defined Under Namespace
Classes: ExecutorError, InvalidArelError
Constant Summary
collapse
- VERSION =
'0.1.0'
Class Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Class Attribute Details
.executor ⇒ Object
Returns the value of attribute executor.
7
8
9
|
# File 'lib/squirrell.rb', line 7
def executor
@executor
end
|
.permits ⇒ Object
Returns the value of attribute permits.
6
7
8
|
# File 'lib/squirrell.rb', line 6
def permits
@permits
end
|
.requires ⇒ Object
Returns the value of attribute requires.
5
6
7
|
# File 'lib/squirrell.rb', line 5
def requires
@requires
end
|
Class Method Details
17
18
19
|
# File 'lib/squirrell.rb', line 17
def self.configure
yield self
end
|
.included(klass) ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/squirrell.rb', line 34
def self.included(klass)
Squirrell.requires ||= {}
Squirrell.requires[klass] = []
Squirrell.permits ||= {}
Squirrell.permits[klass] = []
def klass.requires(*args)
Squirrell.requires[self] = args
end
def klass.permits(*args)
Squirrell.permits[self] = args
end
def initialize(args)
Squirrell.requires[self.class].each do |k|
unless args.keys.include? k
fail ArgumentError, "Missing required parameter: #{k}"
end
instance_variable_set "@#{k}", args.delete(k)
end
Squirrell.permits[self.class].each do |k|
instance_variable_set "@#{k}", args.delete(k) if args.keys.include? k
end
fail ArgumentError if args.any?
end
def klass.find(args = {})
do_query(new(args))
end
def klass.do_query(object)
result = nil
if object.respond_to? :finder
result = object.finder
else
sql = object.raw_sql
result = Squirrell.executor.call(sql)
end
object.process(result)
end
end
|
Instance Method Details
#initialize(args) ⇒ Object
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/squirrell.rb', line 48
def initialize(args)
Squirrell.requires[self.class].each do |k|
unless args.keys.include? k
fail ArgumentError, "Missing required parameter: #{k}"
end
instance_variable_set "@#{k}", args.delete(k)
end
Squirrell.permits[self.class].each do |k|
instance_variable_set "@#{k}", args.delete(k) if args.keys.include? k
end
fail ArgumentError if args.any?
end
|
#process(results) ⇒ Object
27
28
29
|
# File 'lib/squirrell.rb', line 27
def process(results)
results
end
|
#raw_sql ⇒ Object
21
22
23
24
25
|
# File 'lib/squirrell.rb', line 21
def raw_sql
sql = arel
fail InvalidArelError unless sql.respond_to? :to_sql
sql.to_sql
end
|