assimilate 0.0.5 → 0.1.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.
- data/lib/assimilate/batch.rb +4 -1
- data/lib/assimilate/catalog.rb +8 -4
- data/lib/assimilate/version.rb +1 -1
- data/spec/data/test.yml +2 -0
- data/spec/lib/batch_spec.rb +3 -2
- metadata +13 -13
data/lib/assimilate/batch.rb
CHANGED
@@ -132,20 +132,23 @@ class Assimilate::Batch
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def apply_updates
|
135
|
+
marker = @catalog.config[:update_marker]
|
135
136
|
@changes.each do |key, diffs|
|
136
137
|
@catalog.catalog.update(
|
137
138
|
{
|
138
139
|
@domainkey => domain,
|
139
140
|
idfield => key
|
140
141
|
},
|
141
|
-
{"$set" => diffs}
|
142
|
+
{"$set" => diffs.merge(marker => datestamp)}
|
142
143
|
)
|
143
144
|
end
|
144
145
|
end
|
145
146
|
|
146
147
|
def decorate(records)
|
148
|
+
marker = @catalog.config[:insertion_marker]
|
147
149
|
records.map do |r|
|
148
150
|
r[@domainkey] = @domain
|
151
|
+
r[marker] = datestamp
|
149
152
|
r.to_hash
|
150
153
|
end
|
151
154
|
end
|
data/lib/assimilate/catalog.rb
CHANGED
@@ -33,10 +33,10 @@ class Assimilate::Catalog
|
|
33
33
|
|
34
34
|
def check_config
|
35
35
|
config.symbolize_keys!
|
36
|
-
[:db, :catalog, :batch, :domain, :deletion_marker].each do |key|
|
36
|
+
[:db, :catalog, :batch, :domain, :deletion_marker, :insertion_marker, :update_marker].each do |key|
|
37
37
|
raise Assimilate::InvalidConfiguration, "missing required parameter: #{key}" unless config[key]
|
38
38
|
end
|
39
|
-
[:domain, :deletion_marker].each do |key|
|
39
|
+
[:domain, :deletion_marker, :insertion_marker, :update_marker].each do |key|
|
40
40
|
# enforce leading underscore on internal attributes
|
41
41
|
config[key] = "_#{config[key]}" unless config[key] =~ /^_/
|
42
42
|
end
|
@@ -51,8 +51,12 @@ class Assimilate::Catalog
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def where(params)
|
54
|
-
|
55
|
-
|
54
|
+
records = @catalog.find(params).to_a #.map {|rec| rec.select {|k,v| k !~ /^_/}}
|
55
|
+
if records.count == 1
|
56
|
+
records.first
|
57
|
+
else
|
58
|
+
records
|
59
|
+
end
|
56
60
|
end
|
57
61
|
|
58
62
|
def active_count
|
data/lib/assimilate/version.rb
CHANGED
data/spec/data/test.yml
CHANGED
data/spec/lib/batch_spec.rb
CHANGED
@@ -45,8 +45,8 @@ describe "importing file" do
|
|
45
45
|
|
46
46
|
it "should load the records verbatim" do
|
47
47
|
@catalog.catalog.count.should == 6
|
48
|
-
@catalog.where('_resource' => 'testdata', 'ID' => '3')
|
49
|
-
|
48
|
+
franklin = @catalog.where('_resource' => 'testdata', 'ID' => '3')
|
49
|
+
franklin.keys.sort.should == ['ID', 'name', 'title', 'spouse', '_id', '_resource', '_first_seen'].sort
|
50
50
|
end
|
51
51
|
|
52
52
|
it "should refuse to do a duplicate import" do
|
@@ -102,6 +102,7 @@ describe "importing file" do
|
|
102
102
|
it "should handle deleted attributes" do
|
103
103
|
franklin = @catalog.where('ID' => '3')
|
104
104
|
franklin['spouse'].should be_nil
|
105
|
+
franklin['_last_updated'].should == '345'
|
105
106
|
end
|
106
107
|
end
|
107
108
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: assimilate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-05-03 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongo
|
16
|
-
requirement: &
|
16
|
+
requirement: &2157622380 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.6.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2157622380
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bson_ext
|
27
|
-
requirement: &
|
27
|
+
requirement: &2157620560 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.6.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2157620560
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activesupport
|
38
|
-
requirement: &
|
38
|
+
requirement: &2157620020 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 3.2.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2157620020
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &2157619060 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 2.9.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2157619060
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: guard-rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &2157618020 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 0.7.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2157618020
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: ruby_gntp
|
71
|
-
requirement: &
|
71
|
+
requirement: &2157616740 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: 0.3.4
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2157616740
|
80
80
|
description: Ingest updates from CSV and apply to set of hashes
|
81
81
|
email:
|
82
82
|
- jmay@pobox.com
|