salesforce-orm 1.1.1 → 1.2.0

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: bb0dde57d9050992b024e0d2f99cf4fe2cddc00e
4
- data.tar.gz: 0d4222f8240e6946145638fe9e2c1243c193217b
3
+ metadata.gz: 6eb419aebf2a6276cbc5ad7d63b682801b8c266f
4
+ data.tar.gz: a7a8b85a244d6ebdd9b7ece1eceb0589cdb2900e
5
5
  SHA512:
6
- metadata.gz: 391a7ad141a6d1327facc4d295cb81ad7024fc405132ec474cbfbf0d539fe1f554c67e8bd48596b52dd6f52c326dd2716d56c22333eb6af76df5e83279bc871b
7
- data.tar.gz: 83c41aa9e670584e21549f6d9dd7d4d3131a39da5aebe0b7e4b17fdee7c3f681f1f0bc44433a8e77c96bf6adf6ff09d0d3e6ac7216b3b9e3efb44299db81d4a0
6
+ metadata.gz: 8cb29f0422b63d345733f975508121cffbfbc63db140772216941451c2669cccb19b480bd9b400656cc8c384c875918ef439c52b4cfc5b0035cdbaaeb4149a72
7
+ data.tar.gz: 0a441080b12414e381aa2f8cf6bd2c1e91c21f49bd6f467177615a5d551de1d55eb155e6cc77d6d0db5ad7af2e598384d7e00690b2c548d6f317dd8e0b62fe8f
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- salesforce-orm (1.1.1)
4
+ salesforce-orm (1.2.0)
5
5
  activerecord (~> 3)
6
6
  activerecord-nulldb-adapter (~> 0)
7
7
  restforce (~> 2.5)
@@ -0,0 +1,20 @@
1
+ module SalesforceOrm
2
+ module AwesomePrint
3
+ def self.included(base)
4
+ base.send :alias_method, :cast_without_salesforce_orm_base, :cast
5
+ base.send :alias_method, :cast, :cast_with_salesforce_orm_base
6
+ end
7
+
8
+ def cast_with_salesforce_orm_base(object, type)
9
+ cast = cast_without_salesforce_orm_base(object, type)
10
+ if (defined?(Base)) && (object.is_a?(Base))
11
+ cast = :array
12
+ end
13
+ cast
14
+ end
15
+ end
16
+
17
+ if defined?(::AwesomePrint::Formatter)
18
+ ::AwesomePrint::Formatter.send(:include, AwesomePrint)
19
+ end
20
+ end
@@ -1,4 +1,5 @@
1
1
  require 'forwardable'
2
+ require 'time'
2
3
  require_relative 'sql_to_soql'
3
4
 
4
5
  module SalesforceOrm
@@ -7,7 +8,13 @@ module SalesforceOrm
7
8
  include Enumerable, SqlToSoql
8
9
  extend Forwardable
9
10
 
10
- def_delegators :make_query, *([:each] + Enumerable.instance_methods)
11
+ def_delegators :make_query, *([
12
+ :each,
13
+ :empty?,
14
+ :size,
15
+ :map,
16
+ :inspect
17
+ ] + Enumerable.instance_methods)
11
18
 
12
19
  attr_reader :builder, :client, :klass
13
20
 
@@ -69,6 +76,7 @@ module SalesforceOrm
69
76
 
70
77
  # Handling select differently because we select all the fields by default
71
78
  def select(*args)
79
+ @results = nil
72
80
  except(:select)
73
81
  @builder = builder.select(*args)
74
82
  self
@@ -85,6 +93,7 @@ module SalesforceOrm
85
93
  :reorder
86
94
  ].each do |method_name|
87
95
  define_method(method_name) do |*args|
96
+ @results = nil
88
97
  @builder = builder.send(method_name, *args)
89
98
  self
90
99
  end
@@ -107,7 +116,8 @@ module SalesforceOrm
107
116
  end
108
117
 
109
118
  def make_query
110
- begin
119
+ return @results if @results
120
+ @results = begin
111
121
  soql = to_soql
112
122
  client.query(to_soql).find_all.map do |object|
113
123
  build(object)
@@ -169,7 +179,11 @@ module SalesforceOrm
169
179
  value.to_i
170
180
  when :date_time
171
181
  return nil if value.blank?
172
- Time.zone.parse(value)
182
+ if Time.respond_to?(:zone) && Time.zone
183
+ Time.zone.parse(value)
184
+ else
185
+ Time.parse(value)
186
+ end
173
187
  when :array
174
188
  return [] if value.blank?
175
189
  value.split(';')
@@ -64,5 +64,13 @@ module SalesforceOrm
64
64
  self.class.orm.send(method_name, *([self] + args))
65
65
  end
66
66
  end
67
+
68
+ def to_hash
69
+ to_h
70
+ end
71
+
72
+ def inspect
73
+ to_h
74
+ end
67
75
  end
68
76
  end
@@ -4,19 +4,13 @@ module SalesforceOrm
4
4
  keyword =~ /^(AVG|COUNT|COUNT|COUNT_DISTINCT|MIN|MAX|SUM)\(/i
5
5
  end
6
6
 
7
- def convert_aliased_fields(sql_str, split_by = Regexp.new('\s+'), join_by = ' ')
8
- spcial_char_regex = /[=<>!,]+/
9
- sql_str.split(split_by, -1).map do |keyword|
10
- if aggregate_function?(keyword)
11
- aggregate_data = keyword.match(/^(.*)\((.*)(\).*)/i).captures
12
- raise Error::CommonError, 'Invalid aggregate function' unless aggregate_data[1]
13
- "#{aggregate_data[0]}(#{convert_aliased_fields(aggregate_data[1])}#{aggregate_data[2]}"
14
- elsif keyword =~ spcial_char_regex
15
- convert_aliased_fields(keyword, spcial_char_regex, keyword.gsub(spcial_char_regex).first)
16
- else
17
- klass.field_map[keyword.to_sym] || keyword
18
- end
19
- end.join(join_by)
7
+ def convert_aliased_fields(sql_str)
8
+ result = sql_str.clone
9
+ klass.field_map.keys.each do |k|
10
+ regex = Regexp.new("([\(\)=<>!,%'\s\t]+)#{k.to_s}([\(\)=<>!,%'\s\t]+|$)")
11
+ result.gsub!(regex, "\\1#{klass.field_map[k].to_s}\\2")
12
+ end
13
+ result.gsub!(/\s+/, ' ')
20
14
  end
21
15
 
22
16
  def boolean_data_type_conversion(sql)
@@ -1,3 +1,3 @@
1
1
  module SalesforceOrm
2
- VERSION = '1.1.1'.freeze
2
+ VERSION = '1.2.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: salesforce-orm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vishal Vijay
@@ -128,6 +128,7 @@ files:
128
128
  - Rakefile
129
129
  - build.sh
130
130
  - lib/salesforce-orm.rb
131
+ - lib/salesforce-orm/awesome_print.rb
131
132
  - lib/salesforce-orm/base.rb
132
133
  - lib/salesforce-orm/configuration.rb
133
134
  - lib/salesforce-orm/error.rb