standard-file 0.2.1 → 0.2.2
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/standard_file/sync_manager.rb +14 -17
- data/lib/standard_file/version.rb +1 -1
- 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: ab9c9510debb2155ec3271b1997a11ff3997df23
|
4
|
+
data.tar.gz: 802ae9e8e6b97ded28df5561f1c60f4bd3d27339
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d87fae4c82dc1d61a8bcb6546588a7321d1de94e1dd5d02929b37b97614c16b2735e7bb43d019213f44eb7fb1052313755a280043d29bb32d53b2d86cc1a623f
|
7
|
+
data.tar.gz: 9fadc2eb44affaaf1747f972698ba7fe6a9eaa650f9dc8bf725cc7c34740c84f5ecf41a3303e9cb3ac68a369d3c35b84fa7e53b82575aac902cd12dfa7a1dc91
|
@@ -24,12 +24,12 @@ module StandardFile
|
|
24
24
|
|
25
25
|
retrieved_items, cursor_token = _sync_get(in_sync_token, in_cursor_token, limit).to_a
|
26
26
|
last_updated = DateTime.now
|
27
|
-
saved_items,
|
27
|
+
saved_items, unsaved_items = _sync_save(item_hashes)
|
28
28
|
if saved_items.length > 0
|
29
29
|
last_updated = saved_items.sort_by{|m| m.updated_at}.last.updated_at
|
30
30
|
end
|
31
31
|
|
32
|
-
|
32
|
+
check_for_conflicts(saved_items, retrieved_items, unsaved_items)
|
33
33
|
|
34
34
|
# add 1 microsecond to avoid returning same object in subsequent sync
|
35
35
|
last_updated = (last_updated.to_time + 1/100000.0).to_datetime.utc
|
@@ -38,13 +38,13 @@ module StandardFile
|
|
38
38
|
return {
|
39
39
|
:retrieved_items => retrieved_items,
|
40
40
|
:saved_items => saved_items,
|
41
|
-
:unsaved =>
|
41
|
+
:unsaved => unsaved_items,
|
42
42
|
:sync_token => sync_token,
|
43
43
|
:cursor_token => cursor_token
|
44
44
|
}
|
45
45
|
end
|
46
46
|
|
47
|
-
def check_for_conflicts(saved_items, retrieved_items,
|
47
|
+
def check_for_conflicts(saved_items, retrieved_items, unsaved_items)
|
48
48
|
# conflicts occur when you are trying to save an item for which there is a pending change already
|
49
49
|
min_conflict_interval = 20
|
50
50
|
|
@@ -53,24 +53,21 @@ module StandardFile
|
|
53
53
|
conflicts = saved_ids & retrieved_ids # & is the intersection
|
54
54
|
# saved items take precedence, retrieved items are duplicated with a new uuid
|
55
55
|
conflicts.each do |conflicted_uuid|
|
56
|
-
# if changes are greater than min_conflict_interval seconds apart,
|
56
|
+
# if changes are greater than min_conflict_interval seconds apart,
|
57
|
+
# push the retrieved item in the unsaved array so that the client can duplicate it
|
57
58
|
saved = saved_items.find{|i| i.uuid == conflicted_uuid}
|
58
59
|
conflicted = retrieved_items.find{|i| i.uuid == conflicted_uuid}
|
59
60
|
if (saved.updated_at - conflicted.updated_at).abs > min_conflict_interval
|
60
|
-
puts "\n\n\n Creating conflicted copy of #{saved.uuid}\n\n\n"
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
last_updated = dup.updated_at
|
61
|
+
# puts "\n\n\n Creating conflicted copy of #{saved.uuid}\n\n\n"
|
62
|
+
|
63
|
+
unsaved_items.push({
|
64
|
+
:item => conflicted,
|
65
|
+
:error => {:tag => "sync_conflict"}
|
66
|
+
})
|
67
|
+
|
68
|
+
retrieved_items.delete(conflicted)
|
69
69
|
end
|
70
|
-
retrieved_items.delete(conflicted)
|
71
70
|
end
|
72
|
-
|
73
|
-
return last_updated
|
74
71
|
end
|
75
72
|
|
76
73
|
def destroy_items(uuids)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: standard-file
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Standard File
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|