activerecord_sqlserver_crm 4.2.18 → 4.3.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 +4 -4
- data/lib/active_record_extension.rb +23 -1
- data/lib/activerecord_sqlserver_crm/version.rb +1 -1
- data/lib/odata/create_operation.rb +15 -5
- data/lib/odata/delete_operation.rb +13 -1
- data/lib/odata/operation.rb +18 -2
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5632b8f45c98560b213a941945be26caf7933396
|
|
4
|
+
data.tar.gz: 2b79f447a42186b1143f98d8e0f3e30fcba6911e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 81567aa661188bacd4765591de49261aa900c6a94c1879fe99e18cb18798365c408ca20df536c13262cf941a1b1363b508e1b1f005e9b5186d9cb567529fb23f
|
|
7
|
+
data.tar.gz: fa2db689e0709d531eee6ce092e71a89dd7cdade0ec3e815ac2106579864128f08ffaa78a119c2ed09c648bcb404c4bfafad5be105918914c0a947ab6dc70e59
|
|
@@ -41,7 +41,7 @@ module ActiveRecordExtension
|
|
|
41
41
|
if has_errors
|
|
42
42
|
raise_record_invalid
|
|
43
43
|
else
|
|
44
|
-
reload
|
|
44
|
+
reload unless id.nil?
|
|
45
45
|
end
|
|
46
46
|
!has_errors
|
|
47
47
|
end
|
|
@@ -101,6 +101,28 @@ module ActiveRecordExtension
|
|
|
101
101
|
@many_to_many_associated_tables = value
|
|
102
102
|
end
|
|
103
103
|
|
|
104
|
+
# Binding name is found in the metadata xml file. It will look something like (system users - opportunities):
|
|
105
|
+
# <EntitySet Name="systemusers" EntityType="Microsoft.Dynamics.CRM.systemuser">
|
|
106
|
+
# <NavigationPropertyBinding Path="new_systemuser_opportunity" Target="opportunities"/>
|
|
107
|
+
# Its different for both entities, so this is a hash of tablename to binding name
|
|
108
|
+
def many_to_many_binding_name
|
|
109
|
+
@many_to_many_binding_name
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def many_to_many_binding_name=(value)
|
|
113
|
+
@many_to_many_binding_name = value
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# For some associations the new api does not work, notably the systemuser. But the old api does work.
|
|
117
|
+
# Hopefully in future releases Microsoft will fix the new apis.
|
|
118
|
+
def many_to_many_use_old_api
|
|
119
|
+
@many_to_many_use_old_api ||= false
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def many_to_many_use_old_api=(value)
|
|
123
|
+
@many_to_many_use_old_api = value
|
|
124
|
+
end
|
|
125
|
+
|
|
104
126
|
# In some cases the odata field name is different than the database field name. This method is used for this mapping
|
|
105
127
|
def odata_field(field, options)
|
|
106
128
|
@odata_property_key ||= {}
|
|
@@ -8,8 +8,10 @@ module OData
|
|
|
8
8
|
@ar.id = id[0][0] unless id.nil? || id[0].nil?
|
|
9
9
|
@ar.errors[:base] << "Failed to #{operation_callback_name} entity. [http code #{response.code}]" if @ar.id.nil?
|
|
10
10
|
elsif response.code >= 200 && response.code < 300
|
|
11
|
-
# Associating record does not return any body, just a positive response code
|
|
12
|
-
|
|
11
|
+
# Associating record for many to many does not return any body, just a positive response code
|
|
12
|
+
# So look up id and save to attribute
|
|
13
|
+
id = saved_many_to_many_id
|
|
14
|
+
@ar.send("#{@ar.class.primary_key}=".to_sym, id)
|
|
13
15
|
else
|
|
14
16
|
@ar.errors[:base] << "Could not #{operation_callback_name} entity. [http code #{response.code}]" if @ar.id.nil?
|
|
15
17
|
end
|
|
@@ -24,7 +26,11 @@ module OData
|
|
|
24
26
|
if @ar.class.belongs_to_field?(field)
|
|
25
27
|
belongs_to_field = @ar.class.belongs_to_field(field)
|
|
26
28
|
if many_to_many_table?
|
|
27
|
-
|
|
29
|
+
if many_to_many_use_old_api?
|
|
30
|
+
body["uri"] = "#{old_base_url}#{many_to_many_associated_table_name(1)}Set(guid%27#{many_to_many_entity_id(1)}%27)"
|
|
31
|
+
else
|
|
32
|
+
body["@odata.id"] = "#{base_url}#{many_to_many_entity_name(1)}(#{many_to_many_entity_id(1)})"
|
|
33
|
+
end
|
|
28
34
|
else
|
|
29
35
|
odata_table_ref = @ar.class.odata_table_reference || table_pluralize(belongs_to_field.table_name).downcase
|
|
30
36
|
body["#{belongs_to_field.options[:crm_key]}@odata.bind"] = "/#{odata_table_ref}(#{values[1]})"
|
|
@@ -42,9 +48,13 @@ module OData
|
|
|
42
48
|
end
|
|
43
49
|
|
|
44
50
|
def operation_url
|
|
51
|
+
# For many to many we associate
|
|
45
52
|
if many_to_many_table?
|
|
46
|
-
|
|
47
|
-
|
|
53
|
+
if many_to_many_use_old_api?
|
|
54
|
+
"#{old_base_url}#{many_to_many_associated_table_name(0)}Set(guid%27#{many_to_many_entity_id(0)}%27)/%24links/#{many_to_many_binding_name}"
|
|
55
|
+
else
|
|
56
|
+
"#{base_url}#{many_to_many_entity_name(0)}(#{many_to_many_entity_id(0)})/#{many_to_many_binding_name}/%24ref"
|
|
57
|
+
end
|
|
48
58
|
else
|
|
49
59
|
"#{base_url}#{entity_name}"
|
|
50
60
|
end
|
|
@@ -19,7 +19,19 @@ module OData
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def operation_url
|
|
22
|
-
|
|
22
|
+
# For many to many we disassociate
|
|
23
|
+
if many_to_many_table?
|
|
24
|
+
"#{old_base_url}#{many_to_many_associated_table_name(0)}Set(guid%27#{many_to_many_entity_id(0)}%27)/%24links/#{many_to_many_binding_name}(guid%27#{many_to_many_entity_id(1)}%27)"
|
|
25
|
+
|
|
26
|
+
# Some reason I cant get the new api to delete, so just using old for now.
|
|
27
|
+
# if many_to_many_use_old_api?
|
|
28
|
+
# "#{old_base_url}#{many_to_many_associated_table_name(0)}Set(guid%27#{many_to_many_entity_id(0)}%27)/%24links/#{many_to_many_binding_name}(guid%27#{many_to_many_entity_id(1)}%27)"
|
|
29
|
+
# else
|
|
30
|
+
# "#{base_url}#{many_to_many_entity_name(0)}(#{many_to_many_entity_id(0)})/#{many_to_many_binding_name}/%24ref%3F%24id=#{base_url}#{many_to_many_entity_name(1)}(#{many_to_many_entity_id(1)})"
|
|
31
|
+
# end
|
|
32
|
+
else
|
|
33
|
+
"#{base_url}#{entity_name}(#{@ar.id})"
|
|
34
|
+
end
|
|
23
35
|
end
|
|
24
36
|
end
|
|
25
37
|
end
|
data/lib/odata/operation.rb
CHANGED
|
@@ -13,6 +13,10 @@ module OData
|
|
|
13
13
|
OdataConfig.odata_config[Rails.env]['data_url']
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
+
def old_base_url
|
|
17
|
+
OdataConfig.odata_config[Rails.env]['old_data_url']
|
|
18
|
+
end
|
|
19
|
+
|
|
16
20
|
def check_response_errors(response)
|
|
17
21
|
# Check for Http error
|
|
18
22
|
if response.code.to_i >= 400
|
|
@@ -37,8 +41,16 @@ module OData
|
|
|
37
41
|
@ar.class.many_to_many_associated_tables.present?
|
|
38
42
|
end
|
|
39
43
|
|
|
44
|
+
def many_to_many_use_old_api?
|
|
45
|
+
@ar.class.many_to_many_use_old_api
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def many_to_many_binding_name
|
|
49
|
+
@ar.class.many_to_many_binding_name || many_to_many_table_name
|
|
50
|
+
end
|
|
51
|
+
|
|
40
52
|
def many_to_many_entity_name(index)
|
|
41
|
-
@ar.class.many_to_many_associated_tables[index].odata_table_reference || table_pluralize(
|
|
53
|
+
@ar.class.many_to_many_associated_tables[index].odata_table_reference || table_pluralize(many_to_many_associated_table_name(index)).downcase
|
|
42
54
|
end
|
|
43
55
|
|
|
44
56
|
def many_to_many_class_name(index)
|
|
@@ -54,7 +66,11 @@ module OData
|
|
|
54
66
|
end
|
|
55
67
|
|
|
56
68
|
def many_to_many_table_name
|
|
57
|
-
@ar.class.odata_table_reference || @ar.class.table_name
|
|
69
|
+
@ar.class.odata_table_reference || @ar.class.table_name
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def many_to_many_associated_table_name(index)
|
|
73
|
+
@ar.class.many_to_many_associated_tables[index].table_name
|
|
58
74
|
end
|
|
59
75
|
|
|
60
76
|
def operation_body
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: activerecord_sqlserver_crm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.
|
|
4
|
+
version: 4.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Rolf Lawrenz
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-
|
|
11
|
+
date: 2017-02-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|