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