filemaker 0.0.14 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/filemaker.gemspec +2 -2
- data/lib/filemaker/model/criteria.rb +5 -0
- data/lib/filemaker/model/field.rb +7 -2
- data/lib/filemaker/model/findable.rb +1 -0
- data/lib/filemaker/model/selectable.rb +11 -0
- data/lib/filemaker/version.rb +1 -1
- data/spec/filemaker/model/criteria_spec.rb +9 -0
- data/spec/filemaker/model_spec.rb +4 -4
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87a4555ad4c5f09c28a044bb5b688fbdc527c374
|
4
|
+
data.tar.gz: f2cff3d87e7644b6a6bfd4390fc5f55216aa410b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0872f4b1248bcad5ada6c5ce699387d144f3d495b354c8afbf0b145f66534b27c84d6e1a5b136c0e47a10d30cd18fd3eed5bd4f7ea102b71b6dba423d2834cb
|
7
|
+
data.tar.gz: 805aea2ce462c4aa61648136adbcd6a7ba50151cddc9d408bfcba3d4ae3523350c2f14e1d24e3f6e38d03e3cd9b9e6a5ce3cd801e6a5aa11a06907025ab38661
|
data/.travis.yml
CHANGED
data/filemaker.gemspec
CHANGED
@@ -23,8 +23,8 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_runtime_dependency 'nokogiri'
|
24
24
|
spec.add_runtime_dependency 'activemodel'
|
25
25
|
|
26
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
27
|
-
spec.add_development_dependency 'rake', '~>
|
26
|
+
spec.add_development_dependency 'bundler', '~> 1.11'
|
27
|
+
spec.add_development_dependency 'rake', '~> 11.0'
|
28
28
|
spec.add_development_dependency 'rspec', '~> 3.1'
|
29
29
|
spec.add_development_dependency 'rubocop'
|
30
30
|
spec.add_development_dependency 'pry-byebug'
|
@@ -63,6 +63,8 @@ module Filemaker
|
|
63
63
|
klass.api.find(selector, options).count
|
64
64
|
elsif chains.include?(:in)
|
65
65
|
klass.api.query(selector, options).count
|
66
|
+
elsif chains.include?(:custom)
|
67
|
+
klass.api.findquery(selector, options).count
|
66
68
|
else
|
67
69
|
klass.api.findall(options).count
|
68
70
|
end
|
@@ -80,6 +82,9 @@ module Filemaker
|
|
80
82
|
elsif chains.include?(:in)
|
81
83
|
# Use -findquery
|
82
84
|
resultset = klass.api.query(selector, options)
|
85
|
+
elsif chains.include?(:custom)
|
86
|
+
# Use -findquery directly
|
87
|
+
resultset = klass.api.findquery(selector, options)
|
83
88
|
else
|
84
89
|
# Use -findall
|
85
90
|
limit(1) unless limit?
|
@@ -17,6 +17,9 @@ module Filemaker
|
|
17
17
|
#
|
18
18
|
# If the value is `==` (match empty) or `=*` (match record), then we will
|
19
19
|
# skip coercion.
|
20
|
+
#
|
21
|
+
# Date and DateTime will be special. If the value is a String, the query
|
22
|
+
# may be '2016', '3/2016' or '3/24/2016' for example.
|
20
23
|
def coerce(value)
|
21
24
|
return nil if value.nil?
|
22
25
|
return value if value == '==' || value == '=*'
|
@@ -30,15 +33,17 @@ module Filemaker
|
|
30
33
|
BigDecimal.new(value.to_s)
|
31
34
|
elsif @type == Date
|
32
35
|
return value if value.is_a? Date
|
36
|
+
return value.to_s if value.is_a? String
|
33
37
|
Date.parse(value.to_s)
|
34
38
|
elsif @type == DateTime
|
35
39
|
return value if value.is_a? DateTime
|
40
|
+
return value.to_s if value.is_a? String
|
36
41
|
DateTime.parse(value.to_s)
|
37
42
|
else
|
38
43
|
value
|
39
44
|
end
|
40
|
-
rescue
|
41
|
-
warn "Could not coerce #{name}: #{value}"
|
45
|
+
rescue Exception => e
|
46
|
+
warn "[#{e.message}] Could not coerce #{name}: #{value}"
|
42
47
|
value
|
43
48
|
end
|
44
49
|
end
|
@@ -10,6 +10,7 @@ module Filemaker
|
|
10
10
|
raise Filemaker::Errors::MixedClauseError,
|
11
11
|
"Can't mix 'where' with 'in'." if chains.include?(:in)
|
12
12
|
chains.push(:where)
|
13
|
+
chains.delete(:in)
|
13
14
|
|
14
15
|
@selector ||= {}
|
15
16
|
selector.merge!(klass.with_model_fields(criterion))
|
@@ -58,6 +59,7 @@ module Filemaker
|
|
58
59
|
"Can't mix 'where' with 'in'." if chains.include?(:in)
|
59
60
|
chains.push(operator.to_sym)
|
60
61
|
chains.push(:where) unless chains.include?(:where) # Just one time
|
62
|
+
chains.delete(:in)
|
61
63
|
@selector ||= {}
|
62
64
|
|
63
65
|
criterion = if operator == 'bw'
|
@@ -100,6 +102,7 @@ module Filemaker
|
|
100
102
|
raise Filemaker::Errors::MixedClauseError,
|
101
103
|
"Can't mix 'in' with 'where'." if chains.include?(:where)
|
102
104
|
chains.push(:in)
|
105
|
+
chains.delete(:where)
|
103
106
|
@selector ||= []
|
104
107
|
|
105
108
|
become_array(criterion).each do |hash|
|
@@ -112,6 +115,14 @@ module Filemaker
|
|
112
115
|
self
|
113
116
|
end
|
114
117
|
|
118
|
+
def custom_query(criterion)
|
119
|
+
chains.push(:custom)
|
120
|
+
chains.delete(:where)
|
121
|
+
chains.delete(:in)
|
122
|
+
@selector = criterion
|
123
|
+
self
|
124
|
+
end
|
125
|
+
|
115
126
|
# Simply append '-omit' => true to all criteria
|
116
127
|
def not_in(criterion)
|
117
128
|
self.in(criterion, true)
|
data/lib/filemaker/version.rb
CHANGED
@@ -40,6 +40,15 @@ describe Filemaker::Model::Criteria do
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
+
describe 'custom_query' do
|
44
|
+
it 'remove :where chain' do
|
45
|
+
query = { '-query' => 'this is custom' }
|
46
|
+
criteria.where(name: 'Bob').custom_query(query)
|
47
|
+
expect(criteria.chains).to eq [:custom]
|
48
|
+
expect(criteria.selector).to eq query
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
43
52
|
describe 'find' do
|
44
53
|
it 'resets the selector and will not double :where' do
|
45
54
|
allow(criteria).to receive(:first).and_return(nil)
|
@@ -49,10 +49,10 @@ describe Filemaker::Model do
|
|
49
49
|
expect(model.salary).to be_a BigDecimal
|
50
50
|
end
|
51
51
|
|
52
|
-
it 'created_at is Date' do
|
53
|
-
|
54
|
-
|
55
|
-
end
|
52
|
+
# it 'created_at is Date' do
|
53
|
+
# model.created_at = '4/12/2014'
|
54
|
+
# expect(model.created_at).to be_a Date
|
55
|
+
# end
|
56
56
|
|
57
57
|
it 'accepts date range as string' do
|
58
58
|
model.created_at = '1/1/2016...1/31/2016'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: filemaker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mech
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -72,28 +72,28 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '1.
|
75
|
+
version: '1.11'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '1.
|
82
|
+
version: '1.11'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '11.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '11.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|