go_import 3.0.40 → 3.0.42
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/bin/go-import +4 -4
- data/lib/go_import/model/organization.rb +8 -7
- data/lib/go_import/model/person.rb +3 -3
- data/lib/go_import/model/rootmodel.rb +176 -17
- data/lib/go_import/phone_helper.rb +1 -0
- data/lib/go_import/shard_helper.rb +8 -8
- data/sources/base-crm/.go_import/runner.rb +235 -0
- data/sources/base-crm/Gemfile +5 -0
- data/sources/base-crm/README.md +9 -0
- data/sources/base-crm/converter.rb +62 -0
- data/sources/base-crm/data/contacts.csv +13 -0
- data/sources/base-crm/data/coworkers.csv +3 -0
- data/sources/base-crm/data/deals.csv +5 -0
- data/sources/base-crm/data/leads.csv +4 -0
- data/sources/base-crm/data/notes.csv +6 -0
- data/sources/base-crm/data/tasks.csv +5 -0
- data/spec/helpers/phone_helper_spec.rb +22 -0
- data/spec/helpers/shard_helper_spec.rb +24 -4
- data/spec/person_spec.rb +3 -4
- data/spec/rootmodel_spec.rb +417 -10
- metadata +13 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c51550ffff27ad4fe7f57413acf77764bfd98c9c
|
4
|
+
data.tar.gz: 7aed552fb4339fce5e9419ec9153d60d6add44aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d7028dc367f5d84904c731018c0d77d2951d7267649926e0066584ef0560f43fd797634a8c6f634d6c5de7e983d1dcb1bb3e4860d85040b077eb2de5e39cd35
|
7
|
+
data.tar.gz: b3bb492a053c4dee863714424af4d763d1a0c6c2d907416b6f7190356c6550b70d4842b10e4ba82ece600254aa66865b12ac88207b44d38c5541067d6974f427
|
data/bin/go-import
CHANGED
@@ -76,7 +76,7 @@ class GoImportCommandLine < Thor
|
|
76
76
|
$stdout = File.new(options.log_to_file == "log_to_file" ? "go-import.log" : options.log_to_file, 'w')
|
77
77
|
$stdout.sync = true
|
78
78
|
end
|
79
|
-
max_file_size = options.max_file_size.nil? ? GoImport::File::DEFAULT_MAX_FILE_SIZE : options.max_file_size
|
79
|
+
max_file_size = options.max_file_size.nil? ? GoImport::File::DEFAULT_MAX_FILE_SIZE : options.max_file_size
|
80
80
|
|
81
81
|
if !is_valid_goimport_project?
|
82
82
|
return
|
@@ -102,6 +102,7 @@ class GoImportCommandLine < Thor
|
|
102
102
|
if options.ignore_invalid_files && model.documents.files.length > 0
|
103
103
|
log_and_remove_invalid_files model, max_file_size
|
104
104
|
end
|
105
|
+
model.report_rootmodel_status()
|
105
106
|
|
106
107
|
puts "Starting sharding of model..."
|
107
108
|
sharder = GoImport::ShardHelper.new(options.shard_size)
|
@@ -111,14 +112,14 @@ class GoImportCommandLine < Thor
|
|
111
112
|
puts "Import is large and will be broken into #{models_to_serialize.length} files"
|
112
113
|
end
|
113
114
|
|
114
|
-
models_to_serialize.each_with_index do |model, i|
|
115
|
+
models_to_serialize.each_with_index do |model, i|
|
115
116
|
go_data_zip = options.output.nil? == true ? "go" : options.output
|
116
117
|
go_data_zip += "_#{i}.zip"
|
117
118
|
go_files = options.output_documents.nil? == true ? nil : ::File.basename(options.output_documents,File.extname(options.output_documents))
|
118
119
|
model.save_to_zip(go_data_zip, go_files)
|
119
120
|
puts "Source has been been converted into '#{go_data_zip}'."
|
120
121
|
puts " - and files into '#{go_files}.zip'." if !go_files.nil?
|
121
|
-
if !warnings_msg.empty?
|
122
|
+
if !warnings_msg.empty?
|
122
123
|
puts "WARNINGS: "
|
123
124
|
puts warnings_msg
|
124
125
|
end
|
@@ -205,4 +206,3 @@ class GoImportCommandLine < Thor
|
|
205
206
|
end
|
206
207
|
|
207
208
|
GoImportCommandLine.start(ARGV)
|
208
|
-
|
@@ -37,10 +37,10 @@ module GoImport
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
class Organization < CanBecomeImmutable
|
42
42
|
include SerializeHelper, ModelHasCustomFields, ModelHasTags
|
43
|
-
|
43
|
+
|
44
44
|
immutable_accessor :id
|
45
45
|
immutable_accessor :integration_id
|
46
46
|
immutable_accessor :name
|
@@ -134,6 +134,7 @@ module GoImport
|
|
134
134
|
def add_employee(val)
|
135
135
|
@employees = [] if @employees == nil
|
136
136
|
person = if val.is_a? Person then val else Person.new(val) end
|
137
|
+
person.set_organization_reference = self
|
137
138
|
@employees.push(person)
|
138
139
|
|
139
140
|
# *** TODO:
|
@@ -144,9 +145,9 @@ module GoImport
|
|
144
145
|
# person after is has been added to the organization. We
|
145
146
|
# must update the sources before we can set the person
|
146
147
|
# immutable here.
|
147
|
-
|
148
|
+
|
148
149
|
#person.set_is_immutable
|
149
|
-
|
150
|
+
|
150
151
|
return person
|
151
152
|
end
|
152
153
|
|
@@ -164,7 +165,7 @@ module GoImport
|
|
164
165
|
# otherwise an InvalidRelationError error will be thrown.
|
165
166
|
def relation=(relation)
|
166
167
|
raise_if_immutable
|
167
|
-
|
168
|
+
|
168
169
|
if relation == Relation::NoRelation || relation == Relation::WorkingOnIt ||
|
169
170
|
relation == Relation::IsACustomer || relation == Relation::WasACustomer || relation == Relation::BeenInTouch
|
170
171
|
@relation = relation
|
@@ -174,10 +175,10 @@ module GoImport
|
|
174
175
|
raise InvalidRelationError
|
175
176
|
end
|
176
177
|
end
|
177
|
-
|
178
|
+
|
178
179
|
def relation_last_modified=(date)
|
179
180
|
raise_if_immutable
|
180
|
-
|
181
|
+
|
181
182
|
begin
|
182
183
|
@relation_last_modified = @relation != Relation::NoRelation ? Date.parse(date).strftime("%Y-%m-%d") : nil
|
183
184
|
rescue
|
@@ -28,11 +28,11 @@ module GoImport
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
class Person < CanBecomeImmutable
|
31
|
+
class Person < CanBecomeImmutable
|
32
32
|
include SerializeHelper, ModelHasCustomFields, ModelHasTags
|
33
33
|
|
34
34
|
immutable_accessor :id
|
35
|
-
immutable_accessor :integration_id
|
35
|
+
immutable_accessor :integration_id
|
36
36
|
immutable_accessor :first_name
|
37
37
|
immutable_accessor :last_name
|
38
38
|
immutable_accessor :direct_phone_number
|
@@ -60,7 +60,7 @@ module GoImport
|
|
60
60
|
set_tag 'Import'
|
61
61
|
end
|
62
62
|
|
63
|
-
def
|
63
|
+
def set_organization_reference=(org)
|
64
64
|
@organization = OrganizationReference.from_organization(org)
|
65
65
|
end
|
66
66
|
|
@@ -22,7 +22,7 @@ module GoImport
|
|
22
22
|
# default.
|
23
23
|
attr_accessor :configuration
|
24
24
|
|
25
|
-
attr_reader :documents
|
25
|
+
attr_reader :documents, :persons
|
26
26
|
|
27
27
|
def serialize_variables
|
28
28
|
[
|
@@ -57,6 +57,10 @@ module GoImport
|
|
57
57
|
configure
|
58
58
|
end
|
59
59
|
|
60
|
+
def persons
|
61
|
+
return @organizations.collect{|k, o| o.employees}.flatten.compact
|
62
|
+
end
|
63
|
+
|
60
64
|
# Adds the specifed coworker object to the model.
|
61
65
|
|
62
66
|
# @example Add a coworker from a new coworker
|
@@ -79,7 +83,7 @@ module GoImport
|
|
79
83
|
raise IntegrationIdIsRequiredError, "An integration id is required for a coworker."
|
80
84
|
end
|
81
85
|
|
82
|
-
if find_coworker_by_integration_id(coworker.integration_id) != nil
|
86
|
+
if find_coworker_by_integration_id(coworker.integration_id, false) != nil
|
83
87
|
raise AlreadyAddedError, "Already added a coworker with integration_id #{coworker.integration_id}"
|
84
88
|
end
|
85
89
|
|
@@ -103,12 +107,12 @@ module GoImport
|
|
103
107
|
if !organization.is_a?(Organization)
|
104
108
|
raise ArgumentError.new("Expected an organization")
|
105
109
|
end
|
106
|
-
|
110
|
+
|
107
111
|
if organization.integration_id.nil? || organization.integration_id.length == 0
|
108
112
|
raise IntegrationIdIsRequiredError, "An integration id is required for an organization."
|
109
113
|
end
|
110
114
|
|
111
|
-
if find_organization_by_integration_id(organization.integration_id) != nil
|
115
|
+
if find_organization_by_integration_id(organization.integration_id, false) != nil
|
112
116
|
raise AlreadyAddedError, "Already added an organization with integration_id #{organization.integration_id}"
|
113
117
|
end
|
114
118
|
|
@@ -137,10 +141,10 @@ module GoImport
|
|
137
141
|
raise IntegrationIdIsRequiredError, "An integration id is required for a deal."
|
138
142
|
end
|
139
143
|
|
140
|
-
if find_deal_by_integration_id(deal.integration_id) != nil
|
144
|
+
if find_deal_by_integration_id(deal.integration_id, false) != nil
|
141
145
|
raise AlreadyAddedError, "Already added a deal with integration_id #{deal.integration_id}"
|
142
146
|
end
|
143
|
-
|
147
|
+
|
144
148
|
if !configuration[:allow_deals_without_responsible] && deal.responsible_coworker.nil?
|
145
149
|
deal.responsible_coworker = @import_coworker
|
146
150
|
end
|
@@ -158,6 +162,13 @@ module GoImport
|
|
158
162
|
configuration[:allow_deals_without_responsible] =
|
159
163
|
config_value.downcase == "true" || config_value == "1"
|
160
164
|
end
|
165
|
+
|
166
|
+
if defined?(REPORT_RESULT)
|
167
|
+
config_value = REPORT_RESULT.to_s
|
168
|
+
|
169
|
+
configuration[:report_result] =
|
170
|
+
config_value.downcase == "true" || config_value == "1"
|
171
|
+
end
|
161
172
|
end
|
162
173
|
|
163
174
|
# Adds the specifed note object to the model.
|
@@ -182,15 +193,15 @@ module GoImport
|
|
182
193
|
if note.integration_id.nil? || note.integration_id.length == 0
|
183
194
|
note.integration_id = @notes.length.to_s
|
184
195
|
end
|
185
|
-
|
186
|
-
if find_note_by_integration_id(note.integration_id) != nil
|
196
|
+
|
197
|
+
if find_note_by_integration_id(note.integration_id, false) != nil
|
187
198
|
raise AlreadyAddedError, "Already added a note with integration_id #{note.integration_id}"
|
188
199
|
end
|
189
200
|
|
190
201
|
if note.created_by.nil?
|
191
202
|
note.created_by = @import_coworker
|
192
203
|
end
|
193
|
-
|
204
|
+
|
194
205
|
@notes[note.integration_id] = note
|
195
206
|
note.set_is_immutable
|
196
207
|
|
@@ -209,35 +220,40 @@ module GoImport
|
|
209
220
|
return @documents.add_file(file)
|
210
221
|
end
|
211
222
|
|
212
|
-
def find_coworker_by_integration_id(integration_id)
|
223
|
+
def find_coworker_by_integration_id(integration_id, report_result=!!configuration[:report_result])
|
213
224
|
if @coworkers.has_key?(integration_id)
|
214
225
|
return @coworkers[integration_id]
|
215
226
|
else
|
227
|
+
report_failed_to_find_object("coworker", ":#{integration_id}") if report_result
|
216
228
|
return nil
|
217
229
|
end
|
218
230
|
end
|
219
231
|
|
220
|
-
def find_organization_by_integration_id(integration_id)
|
232
|
+
def find_organization_by_integration_id(integration_id, report_result=!!configuration[:report_result])
|
221
233
|
if @organizations.has_key?(integration_id)
|
222
234
|
return @organizations[integration_id]
|
223
235
|
else
|
236
|
+
report_failed_to_find_object("organization", ":#{integration_id}") if report_result
|
224
237
|
return nil
|
225
238
|
end
|
226
239
|
|
227
240
|
end
|
228
241
|
|
229
|
-
def find_person_by_integration_id(integration_id)
|
242
|
+
def find_person_by_integration_id(integration_id, report_result=!!configuration[:report_result])
|
230
243
|
return nil if @organizations.nil?
|
231
244
|
@organizations.each do |key, organization|
|
232
245
|
person = organization.find_employee_by_integration_id(integration_id)
|
233
246
|
return person if person
|
234
247
|
end
|
248
|
+
report_failed_to_find_object("person", ":#{integration_id}") if report_result
|
249
|
+
return nil
|
235
250
|
end
|
236
251
|
|
237
|
-
def find_note_by_integration_id(integration_id)
|
252
|
+
def find_note_by_integration_id(integration_id, report_result=!!configuration[:report_result])
|
238
253
|
if @notes.has_key?(integration_id)
|
239
254
|
return @notes[integration_id]
|
240
255
|
else
|
256
|
+
report_failed_to_find_object("note", ":#{integration_id}") if report_result
|
241
257
|
return nil
|
242
258
|
end
|
243
259
|
end
|
@@ -249,18 +265,122 @@ module GoImport
|
|
249
265
|
deals = @deals.values.select do |deal|
|
250
266
|
!deal.customer.nil? && deal.customer.integration_id == organization.integration_id
|
251
267
|
end
|
252
|
-
|
253
268
|
return deals
|
254
269
|
end
|
255
270
|
|
256
|
-
def find_deal_by_integration_id(integration_id)
|
271
|
+
def find_deal_by_integration_id(integration_id, report_result=!!configuration[:report_result])
|
257
272
|
if @deals.has_key?(integration_id)
|
258
273
|
return @deals[integration_id]
|
259
274
|
else
|
275
|
+
report_failed_to_find_object("deal", ":#{integration_id}") if report_result
|
260
276
|
return nil
|
261
277
|
end
|
262
278
|
end
|
263
279
|
|
280
|
+
# Finds a organization based on one of its property.
|
281
|
+
# Returns the first found matching organization
|
282
|
+
# Method is much slower then using find_organization_by_integration_id
|
283
|
+
# @example Finds a organization on its name
|
284
|
+
# rm.find_organization {|org| org.name == "Lundalogik" }
|
285
|
+
def find_organization(report_result=!!configuration[:report_result], &block)
|
286
|
+
result = find(@organizations.values.flatten, &block)
|
287
|
+
report_failed_to_find_object("organization") if result.nil? and report_result
|
288
|
+
return result
|
289
|
+
end
|
290
|
+
|
291
|
+
# Finds organizations based on one of their property.
|
292
|
+
# Returns all matching organizations
|
293
|
+
# @example Selects organizations on their names
|
294
|
+
# rm.select_organizations {|org| org.name == "Lundalogik" }
|
295
|
+
def select_organizations(report_result=!!configuration[:report_result], &block)
|
296
|
+
result = select(@organizations.values.flatten, &block)
|
297
|
+
report_failed_to_find_object("organization") if result.empty? and report_result
|
298
|
+
return result
|
299
|
+
end
|
300
|
+
|
301
|
+
# Finds a person based on one of its property.
|
302
|
+
# Returns the first found matching person
|
303
|
+
# @example Finds a person on its name
|
304
|
+
# rm.find_person {|person| person.first_name == "Kalle" }
|
305
|
+
def find_person(report_result=!!configuration[:report_result], &block)
|
306
|
+
result = find(persons, &block)
|
307
|
+
report_failed_to_find_object("person") if result.nil? and report_result
|
308
|
+
return result
|
309
|
+
end
|
310
|
+
|
311
|
+
# Finds persons based on one of their property.
|
312
|
+
# Returns all matching persons
|
313
|
+
# @example Selects persons on their names
|
314
|
+
# rm.select_person {|p| p.first_name == "Kalle" }
|
315
|
+
def select_persons(report_result=!!configuration[:report_result], &block)
|
316
|
+
result = select(persons, &block)
|
317
|
+
report_failed_to_find_object("person") if result.empty? and report_result
|
318
|
+
return result
|
319
|
+
end
|
320
|
+
|
321
|
+
# Finds a deal based on one of its property.
|
322
|
+
# Returns the first found matching deal
|
323
|
+
# Method is much slower then using find_deal_by_integration_id
|
324
|
+
# @example Finds a deal on its name
|
325
|
+
# rm.find_deal {|deal| deal.value == 120000 }
|
326
|
+
def find_deal(report_result=!!configuration[:report_result], &block)
|
327
|
+
result = find(@deals.values.flatten, &block)
|
328
|
+
report_failed_to_find_object("person") if result.nil? and report_result
|
329
|
+
return result
|
330
|
+
end
|
331
|
+
|
332
|
+
# Finds deals based on one of their property.
|
333
|
+
# Returns all matching deals
|
334
|
+
# @example Selects deals on their names
|
335
|
+
# rm.select_deals {|deal| deal.name == "Big Deal" }
|
336
|
+
def select_deals(report_result=!!configuration[:report_result], &block)
|
337
|
+
result = select(@deals.values.flatten, &block)
|
338
|
+
report_failed_to_find_object("deal") if result.empty? and report_result
|
339
|
+
return result
|
340
|
+
end
|
341
|
+
|
342
|
+
# Finds a coworker based on one of its property.
|
343
|
+
# Returns the first found matching coworker
|
344
|
+
# @example Finds a coworker on its name
|
345
|
+
# rm.find_coworker {|coworker| coworker.email == "kalle@kula.se" }
|
346
|
+
def find_coworker(report_result=!!configuration[:report_result], &block)
|
347
|
+
result = find(@coworkers.values.flatten, &block)
|
348
|
+
report_failed_to_find_object("coworker") if result.nil? and report_result
|
349
|
+
return result
|
350
|
+
end
|
351
|
+
|
352
|
+
# Finds coworkers based on one of their property.
|
353
|
+
# Returns all matching coworkers
|
354
|
+
# @example Selects coworkers on their names
|
355
|
+
# rm.select_coworkers {|coworker| coworker.email == "kalle@kula.se" }
|
356
|
+
def select_coworkers(report_result=!!configuration[:report_result], &block)
|
357
|
+
result = select(@coworkers, &block)
|
358
|
+
report_failed_to_find_object("coworker") if result.empty? and report_result
|
359
|
+
return result
|
360
|
+
end
|
361
|
+
|
362
|
+
|
363
|
+
# Finds a note based on one of its property.
|
364
|
+
# Returns the first found matching note
|
365
|
+
# @example Finds a note on its name
|
366
|
+
# rm.find_note {|note| note.text == "hello!" }
|
367
|
+
def find_note(report_result=!!configuration[:report_result], &block)
|
368
|
+
result = find(@notes.values.flatten, &block)
|
369
|
+
report_failed_to_find_object("note") if result.nil? and report_result
|
370
|
+
return result
|
371
|
+
end
|
372
|
+
|
373
|
+
# Finds a document based on one of its property.
|
374
|
+
# Returns the first found matching document
|
375
|
+
# @example Finds a document on its name
|
376
|
+
# rm.find_document(:file) {|document| document.name == "Important Tender" }
|
377
|
+
def find_document(type, report_result=!!configuration[:report_result], &block)
|
378
|
+
result = find(@documents.files, &block) if type == :file
|
379
|
+
result = find(@documents.links, &block) if type == :link
|
380
|
+
report_failed_to_find_object("document") if result.nil? and report_result
|
381
|
+
return result
|
382
|
+
end
|
383
|
+
|
264
384
|
# Returns a string describing problems with the data. For
|
265
385
|
# instance if integration_id for any entity is not unique.
|
266
386
|
def sanity_check
|
@@ -377,7 +497,7 @@ module GoImport
|
|
377
497
|
end
|
378
498
|
serialize_to_file(go_data_file)
|
379
499
|
create_zip(zip_filename, go_data_file, documents.files)
|
380
|
-
|
500
|
+
|
381
501
|
if !files_filename.nil?
|
382
502
|
go_files_file = Tempfile.new('go-files')
|
383
503
|
puts "Creating go.xml file with documents information..."
|
@@ -393,7 +513,7 @@ module GoImport
|
|
393
513
|
::File.delete files_zip_filename
|
394
514
|
end
|
395
515
|
create_zip(files_zip_filename, go_files_file, documents.files)
|
396
|
-
end
|
516
|
+
end
|
397
517
|
end
|
398
518
|
|
399
519
|
def create_zip(filename, xml, files)
|
@@ -436,6 +556,17 @@ module GoImport
|
|
436
556
|
end
|
437
557
|
end
|
438
558
|
|
559
|
+
def report_rootmodel_status
|
560
|
+
#nbr_of_persons = @organizations.collect{|k, o| o.employees}.flatten.compact.length
|
561
|
+
nbr_of_documents = @documents.files.length + @documents.links.length
|
562
|
+
puts "Rootmodel contains:\n" \
|
563
|
+
" Organizations: #{@organizations.length}\n" \
|
564
|
+
" Persons: #{persons.length}\n" \
|
565
|
+
" Deals: #{@deals.length}\n" \
|
566
|
+
" Notes: #{@notes.length}\n" \
|
567
|
+
" Documents: #{nbr_of_documents}"
|
568
|
+
end
|
569
|
+
|
439
570
|
private
|
440
571
|
# returns all items from the object array with duplicate integration ids.
|
441
572
|
# To get all organizations with the same integration_id use
|
@@ -452,5 +583,33 @@ module GoImport
|
|
452
583
|
obj.integration_id != nil && !obj.integration_id.empty?
|
453
584
|
end
|
454
585
|
end
|
586
|
+
|
587
|
+
# Prints a warning text if a find-function returns nil
|
588
|
+
def report_failed_to_find_object(object, search_string="")
|
589
|
+
c = caller_locations(2).first
|
590
|
+
puts "Warning: #{c.label}:#{c.lineno}: Failed to find #{object}#{search_string}"
|
591
|
+
end
|
592
|
+
|
593
|
+
def find(array)
|
594
|
+
result = nil
|
595
|
+
array.each do |obj|
|
596
|
+
if yield(obj)
|
597
|
+
result = obj
|
598
|
+
break
|
599
|
+
end
|
600
|
+
end
|
601
|
+
return result
|
602
|
+
end
|
603
|
+
|
604
|
+
def select(array)
|
605
|
+
result = []
|
606
|
+
array.each do |obj|
|
607
|
+
if yield(obj)
|
608
|
+
result.push obj
|
609
|
+
end
|
610
|
+
end
|
611
|
+
return result
|
612
|
+
end
|
613
|
+
|
455
614
|
end
|
456
615
|
end
|
@@ -33,6 +33,7 @@ module GoImport
|
|
33
33
|
# source = "046 - 270 48 00/ 031-712 44 00"
|
34
34
|
# number1, number2 = GoImport::PhoneHelper.parse_numbers(source, '/')
|
35
35
|
def self.parse_numbers(number_string, delimiters = ',', strict_mode = false)
|
36
|
+
return nil if number_string.nil?
|
36
37
|
numbers = []
|
37
38
|
|
38
39
|
if delimiters.is_a?(Array)
|
@@ -1,17 +1,17 @@
|
|
1
1
|
module GoImport
|
2
2
|
class ShardHelper
|
3
|
-
|
3
|
+
|
4
4
|
attr_accessor :shards, :current_shard_count, :current_shard
|
5
|
-
|
5
|
+
|
6
6
|
def initialize(shard_size = nil)
|
7
7
|
@shard_size = shard_size || 25000
|
8
8
|
setup()
|
9
9
|
end
|
10
10
|
|
11
11
|
def shard_model(model)
|
12
|
-
@current_shard.
|
12
|
+
@current_shard.settings = model.settings
|
13
13
|
|
14
|
-
model.coworkers.each{ |key, coworker|
|
14
|
+
model.coworkers.each{ |key, coworker|
|
15
15
|
if coworker.integration_id != "import"
|
16
16
|
add_coworker(coworker)
|
17
17
|
end
|
@@ -61,7 +61,7 @@ module GoImport
|
|
61
61
|
@current_shard_count += org.employees.length
|
62
62
|
end
|
63
63
|
@current_shard.add_organization(org)
|
64
|
-
@current_shard_count += 1
|
64
|
+
@current_shard_count += 1
|
65
65
|
end
|
66
66
|
|
67
67
|
private
|
@@ -74,16 +74,16 @@ module GoImport
|
|
74
74
|
def add_file(file)
|
75
75
|
check_or_create_new_chard()
|
76
76
|
@current_shard.add_file(file)
|
77
|
-
@current_shard_count += 1
|
77
|
+
@current_shard_count += 1
|
78
78
|
end
|
79
79
|
|
80
80
|
private
|
81
81
|
def add_link(link)
|
82
82
|
check_or_create_new_chard()
|
83
83
|
@current_shard.add_link(link)
|
84
|
-
@current_shard_count += 1
|
84
|
+
@current_shard_count += 1
|
85
85
|
end
|
86
|
-
|
86
|
+
|
87
87
|
private
|
88
88
|
def check_or_create_new_chard()
|
89
89
|
if @current_shard_count > @shard_size
|