filemaker 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0b5ad4c9868171da5694e25de70b5600debedbe
4
- data.tar.gz: 54c42d1c9e3a4664b6fbceaa0252c1460b356629
3
+ metadata.gz: 87a4555ad4c5f09c28a044bb5b688fbdc527c374
4
+ data.tar.gz: f2cff3d87e7644b6a6bfd4390fc5f55216aa410b
5
5
  SHA512:
6
- metadata.gz: f9d5ac6b04b0205d53b69de121bbb9bde10d57f08746ce7b3f66f4cc0702c7e3475cbf92300d768fe245a3a7b73139fdf4e2b48a358c4b6b90e55c8e501cd42b
7
- data.tar.gz: a8578655262153e2f22735280df49a67acb380f5a10c1c6bf9b0003680ee1a1b4ad98f50debe2e628fb638ab85475d184a47ec5f2d6b93b980a5251fabbdcf21
6
+ metadata.gz: b0872f4b1248bcad5ada6c5ce699387d144f3d495b354c8afbf0b145f66534b27c84d6e1a5b136c0e47a10d30cd18fd3eed5bd4f7ea102b71b6dba423d2834cb
7
+ data.tar.gz: 805aea2ce462c4aa61648136adbcd6a7ba50151cddc9d408bfcba3d4ae3523350c2f14e1d24e3f6e38d03e3cd9b9e6a5ce3cd801e6a5aa11a06907025ab38661
@@ -1,4 +1,4 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.2
3
+ - 2.3.0
4
4
  script: "bundle exec rake"
@@ -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.6'
27
- spec.add_development_dependency 'rake', '~> 10.0'
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
@@ -25,6 +25,7 @@ module Filemaker
25
25
  :begins_with,
26
26
  :ends_with,
27
27
  :not,
28
+ :custom_query,
28
29
  :where, to: :criteria
29
30
 
30
31
  def criteria
@@ -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)
@@ -1,3 +1,3 @@
1
1
  module Filemaker
2
- VERSION = '0.0.14'.freeze
2
+ VERSION = '0.0.15'.freeze
3
3
  end
@@ -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
- model.created_at = '4/12/2014'
54
- expect(model.created_at).to be_a Date
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.14
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-04-15 00:00:00.000000000 Z
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.6'
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.6'
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: '10.0'
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: '10.0'
96
+ version: '11.0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement