salesforce-orm 1.0.0 → 1.1.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: 303fe6c567cdeb834103e79e613875af01482118
4
- data.tar.gz: 4ab2e2a284c173d67999eb1ade3f39bff2921a3b
3
+ metadata.gz: 5b4adb5f45bbeaa6ea82b0d370e5a4c2d9dff98c
4
+ data.tar.gz: 0df34f48d1039efbe762b9a4aff5325abaf09932
5
5
  SHA512:
6
- metadata.gz: 53f212dd26d796b3d3d5c139ac239e74e692cff06f82ee046aab734c4838b1018887cc24b5e3d35ca2f63faabd4bf8d19c47eeccf294d4eb7489c0ee4e870141
7
- data.tar.gz: ea1d0e11c91c047f610f1c10aa8ce008278ae616a0eba92c0bba2ce029175f7b4ddd24cfe451f901522cecdf7f25fae5a39f44e52d2e848b1cdcef37b4c3ef25
6
+ metadata.gz: d7c1d7e2d91dd15152335886830b60e5e448f05a29800f13e86225f7cbce6c68f0c3b38fbb8ca99c8e57c5bfb03eb3aea36a19f166040478ad88f795b1707d0f
7
+ data.tar.gz: 8716ce9f8ec847188ef628b2dda650737ff805531d2242493ec89187d799bfe4b1c3156c70e0f566d6df1476a64f8913e712d1558d649abc49643093ec7efaf5
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- salesforce-orm (1.0.0)
4
+ salesforce-orm (1.1.0)
5
5
  activerecord (~> 3)
6
6
  activerecord-nulldb-adapter (~> 0)
7
7
  restforce (~> 2.5)
@@ -24,11 +24,7 @@ GEM
24
24
  multi_json (~> 1.0)
25
25
  arel (3.0.3)
26
26
  builder (3.0.4)
27
- byebug (0.0.1)
28
- columnize (>= 0.3.1)
29
- debugger-linecache (~> 1.2.0)
30
- columnize (0.9.0)
31
- debugger-linecache (1.2.0)
27
+ byebug (9.0.5)
32
28
  diff-lcs (1.3)
33
29
  faraday (0.12.1)
34
30
  multipart-post (>= 1.2, < 3)
@@ -65,7 +61,7 @@ PLATFORMS
65
61
 
66
62
  DEPENDENCIES
67
63
  bundler (~> 1.15)
68
- byebug (~> 0)
64
+ byebug (~> 9)
69
65
  rake (~> 10.0)
70
66
  rspec (~> 3.0)
71
67
  salesforce-orm!
data/README.md CHANGED
@@ -17,7 +17,7 @@ Or, If you want to install globally
17
17
  gem install salesforce-orm
18
18
  ```
19
19
 
20
- This Gem internally use [Restforce](https://github.com/ejholmes/restforce), So you have configure it
20
+ This Gem internally use [Restforce](https://github.com/ejholmes/restforce), So you have to configure it
21
21
 
22
22
  There are 2 options to configure ([Restforce config](https://github.com/ejholmes/restforce#initialization))
23
23
 
@@ -109,14 +109,34 @@ Default data type map for `SampleObject`
109
109
  If you wanna change the data type of some fields
110
110
 
111
111
  ```
112
- {
113
- field_one: :boolean,
112
+ class SampleObject < SalesforceOrm::ObjectBase
113
+ self.data_type_map = {
114
+ field_one: :datetime,
114
115
  field_two: :integer
115
116
  }
117
+ end
116
118
  ```
117
119
 
118
120
  **NOTE: It's mandatory to add data type map for boolean fields**
119
121
 
122
+ ### record_type
123
+
124
+ By default there is no record type configured for any object
125
+
126
+ To specify a record type,
127
+
128
+ ```
129
+ class SampleObject < SalesforceOrm::ObjectBase
130
+ self.record_type = 'Xyz' # DeveloperName in RecordType object
131
+ end
132
+ ```
133
+
134
+ All the queries and `create!` method will automatically use record type
135
+
136
+ First time use the object, we make a call to Salesforce and find the record type by it's `DeveloperName`. This will be cached in memory.
137
+
138
+ With Rails in except in development or test env, we take the advantage of `Rails.cache`
139
+
120
140
  ### Methods
121
141
 
122
142
  Methods are similar to ActiveRecord::Base
@@ -209,7 +229,6 @@ SampleObject.build({id: 'some id', field_one: 'Some value'})
209
229
 
210
230
  - Default values
211
231
  - Relationships
212
- - Record type
213
232
  - More data types
214
233
  - Better aggregate methods
215
234
 
data/build.sh CHANGED
@@ -1,4 +1,4 @@
1
- gem uninstall -a salesforce-orm-*
1
+ gem uninstall -a salesforce-orm
2
2
  rm salesforce-orm-*
3
3
  gem build salesforce-orm.gemspec
4
4
  gem install salesforce-orm-*
@@ -19,12 +19,19 @@ module SalesforceOrm
19
19
  @klass = klass
20
20
  @client = RestforceClient.instance
21
21
  @builder = QueryBuilder.select(klass.field_map.keys)
22
+ where(RecordTypeManager::FIELD_NAME => klass.record_type_id) if klass.record_type_id
22
23
  end
23
24
 
24
25
  # create! doesn't return the SalesForce object back
25
26
  # It will return only the object id
26
27
  def create!(attributes)
27
- client.create!(klass.object_name, map_to_keys(attributes))
28
+ new_attributes = map_to_keys(attributes)
29
+
30
+ new_attributes = new_attributes.merge(
31
+ RecordTypeManager::FIELD_NAME => klass.record_type_id
32
+ ) if klass.record_type_id
33
+
34
+ client.create!(klass.object_name, new_attributes)
28
35
  end
29
36
 
30
37
  # Transaction not guaranteed
@@ -7,5 +7,7 @@ module SalesforceOrm
7
7
  class CommonError < Base; end
8
8
 
9
9
  class ObjectNotFound < Base; end
10
+
11
+ class RecordTypeNotFound < Base; end
10
12
  end
11
13
  end
@@ -0,0 +1,8 @@
1
+ Dir[File.expand_path('object/*.rb', File.dirname(__FILE__))].each do |file|
2
+ require file
3
+ end
4
+
5
+ module SalesforceOrm
6
+ module Object
7
+ end
8
+ end
@@ -0,0 +1,15 @@
1
+ require_relative '../object_base'
2
+
3
+ module SalesforceOrm
4
+ module Object
5
+ class RecordType < ObjectBase
6
+
7
+ self.field_map = {
8
+ name: :Name,
9
+ sobject_type: :SobjectType,
10
+ developer_name: :DeveloperName,
11
+ }
12
+
13
+ end
14
+ end
15
+ end
@@ -1,6 +1,10 @@
1
+ require_relative 'record_type_manager'
2
+
1
3
  module SalesforceOrm
2
4
  module ObjectMaker
3
5
 
6
+ include RecordTypeManager
7
+
4
8
  DEFAULT_FIELD_MAP = {
5
9
  id: :Id,
6
10
  created_at: :CreatedDate,
@@ -0,0 +1,47 @@
1
+ module SalesforceOrm
2
+ module RecordTypeManager
3
+
4
+ FIELD_NAME = :RecordTypeId
5
+
6
+ def record_type=(new_record_type)
7
+ @record_type = new_record_type
8
+ end
9
+
10
+ def record_type
11
+ @record_type
12
+ end
13
+
14
+ def record_type_id
15
+ return nil unless record_type
16
+ return @record_type_id if @record_type_id
17
+
18
+ record_type_sobject = if defined?(Rails)
19
+ if Rails.env.test?
20
+ Object::RecordType.build(id: 'fake_record_type')
21
+ elsif !Rails.env.development?
22
+ Rails.cache.fetch(record_type_cache_key) do
23
+ fetch_record_type
24
+ end
25
+ else
26
+ fetch_record_type
27
+ end
28
+ else
29
+ fetch_record_type
30
+ end
31
+
32
+ raise Error::RecordTypeNotFound unless record_type_sobject
33
+
34
+ @record_type_id = record_type_sobject.id
35
+ end
36
+
37
+ private
38
+
39
+ def fetch_record_type
40
+ Object::RecordType.where(developer_name: record_type).first
41
+ end
42
+
43
+ def record_type_cache_key
44
+ ['RecordTypeManager', object_name, record_type].join('/')
45
+ end
46
+ end
47
+ end
@@ -1,3 +1,3 @@
1
1
  module SalesforceOrm
2
- VERSION = '1.0.0'.freeze
2
+ VERSION = '1.1.0'.freeze
3
3
  end
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
24
24
  s.add_dependency 'activerecord-nulldb-adapter', '~> 0'
25
25
  s.add_dependency 'restforce', '~> 2.5'
26
26
 
27
- s.add_development_dependency 'byebug', '~> 0'
27
+ s.add_development_dependency 'byebug', '~> 9'
28
28
  s.add_development_dependency 'rspec', '~> 3.0'
29
29
  s.add_development_dependency 'bundler', '~> 1.15'
30
30
  s.add_development_dependency 'rake', '~> 10.0'
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.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vishal Vijay
@@ -59,14 +59,14 @@ dependencies:
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '0'
62
+ version: '9'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '0'
69
+ version: '9'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rspec
72
72
  requirement: !ruby/object:Gem::Requirement
@@ -131,9 +131,12 @@ files:
131
131
  - lib/salesforce-orm/base.rb
132
132
  - lib/salesforce-orm/configuration.rb
133
133
  - lib/salesforce-orm/error.rb
134
+ - lib/salesforce-orm/object.rb
135
+ - lib/salesforce-orm/object/record_type.rb
134
136
  - lib/salesforce-orm/object_base.rb
135
137
  - lib/salesforce-orm/object_maker.rb
136
138
  - lib/salesforce-orm/query_builder.rb
139
+ - lib/salesforce-orm/record_type_manager.rb
137
140
  - lib/salesforce-orm/restforce_client.rb
138
141
  - lib/salesforce-orm/sql_to_soql.rb
139
142
  - lib/salesforce-orm/version.rb