salesforce-orm 1.1.1 → 1.2.0

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