wherever-positions 0.3.2 → 0.4.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/Gemfile.lock +16 -12
- data/VERSION +1 -1
- data/lib/wherever/db_store.rb +22 -2
- data/lib/wherever/db_store/lookup.rb +9 -1
- data/lib/wherever/wherever/lookup.rb +11 -14
- data/wherever-positions.gemspec +1 -1
- metadata +4 -4
data/Gemfile.lock
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
|
5
|
-
|
4
|
+
activemodel (3.1.1)
|
5
|
+
activesupport (= 3.1.1)
|
6
|
+
builder (~> 3.0.0)
|
7
|
+
i18n (~> 0.6)
|
8
|
+
activesupport (3.1.1)
|
9
|
+
multi_json (~> 1.0)
|
10
|
+
bson (1.4.1)
|
6
11
|
bson_ext (1.4.1)
|
7
12
|
builder (3.0.0)
|
8
13
|
columnize (0.3.4)
|
@@ -14,10 +19,10 @@ GEM
|
|
14
19
|
term-ansicolor (>= 1.0.6)
|
15
20
|
database_cleaner (0.6.7)
|
16
21
|
diff-lcs (1.1.3)
|
17
|
-
durran-validatable (2.0.1)
|
18
22
|
gherkin (2.5.4)
|
19
23
|
json (>= 1.4.6)
|
20
24
|
git (1.2.5)
|
25
|
+
i18n (0.6.0)
|
21
26
|
jeweler (1.6.4)
|
22
27
|
bundler (~> 1.0)
|
23
28
|
git (>= 1.2.5)
|
@@ -25,14 +30,13 @@ GEM
|
|
25
30
|
json (1.6.1)
|
26
31
|
linecache (0.46)
|
27
32
|
rbx-require-relative (> 0.0.4)
|
28
|
-
mongo (1.
|
29
|
-
bson (
|
30
|
-
mongoid (
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
will_paginate (< 2.9)
|
33
|
+
mongo (1.4.1)
|
34
|
+
bson (= 1.4.1)
|
35
|
+
mongoid (2.3.2)
|
36
|
+
activemodel (~> 3.1)
|
37
|
+
mongo (~> 1.4)
|
38
|
+
tzinfo (~> 0.3.22)
|
39
|
+
multi_json (1.0.3)
|
36
40
|
rake (0.9.2.2)
|
37
41
|
rbx-require-relative (0.0.5)
|
38
42
|
rcov (0.9.11)
|
@@ -50,7 +54,7 @@ GEM
|
|
50
54
|
ruby-debug-base (0.10.4)
|
51
55
|
linecache (>= 0.3)
|
52
56
|
term-ansicolor (1.0.7)
|
53
|
-
|
57
|
+
tzinfo (0.3.30)
|
54
58
|
|
55
59
|
PLATFORMS
|
56
60
|
ruby
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/lib/wherever/db_store.rb
CHANGED
@@ -17,13 +17,33 @@ module DbStore
|
|
17
17
|
get_store(marker, keys, :dataset)
|
18
18
|
)
|
19
19
|
end
|
20
|
+
|
21
|
+
def new_lookup(name, keys=nil)
|
22
|
+
@stores ||= {}
|
23
|
+
@stores[name] = get_lookup(name, keys)
|
24
|
+
end
|
20
25
|
|
21
26
|
def get_store(marker, keys, db_type)
|
22
27
|
name = "#{marker.upcase}_#{keys.map(&:upcase).join('_')}_#{db_type.to_s.upcase}"
|
23
28
|
return "DbStore::#{name}".constantize if DbStore.constants.include?(name)
|
29
|
+
build_class(name, "DbStore::#{db_type.to_s.titlecase}Config".constantize, :"#{marker}_#{keys.join('_')}_#{db_type}")
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_lookup(name, keys)
|
33
|
+
if keys
|
34
|
+
DbStore::Lookup.find_or_create_by(:name => name, :keys => keys)
|
35
|
+
end
|
36
|
+
name = "Lookup_#{name.upcase}"
|
37
|
+
return "DbStore::#{name}".constantize if DbStore.constants.include?(name)
|
38
|
+
raise "Missing lookup key from definition" unless keys
|
39
|
+
|
40
|
+
build_class(name, DbStore::VersionConfig, :"lookup_#{name}")
|
41
|
+
end
|
42
|
+
|
43
|
+
def build_class(name, module_object, store_in)
|
24
44
|
klass = DbStore.const_set(name, Class.new)
|
25
|
-
klass.send :include,
|
26
|
-
klass.send :store_in,
|
45
|
+
klass.send :include, module_object
|
46
|
+
klass.send :store_in, store_in
|
27
47
|
klass
|
28
48
|
end
|
29
49
|
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module DbStore
|
2
2
|
class Lookup
|
3
3
|
include Mongoid::Document
|
4
|
-
embeds_many :versions, :class_name => 'DbStore::Version'
|
5
4
|
field :name, :type => String
|
6
5
|
field :keys, :type => Hash
|
7
6
|
field :lookups, :type => Hash, :default => {}
|
7
|
+
field :current, :type => String
|
8
8
|
end
|
9
9
|
|
10
10
|
class Version
|
@@ -13,4 +13,12 @@ module DbStore
|
|
13
13
|
field :name, :type => String
|
14
14
|
field :values, :type => Hash, :default => Hash.new(0)
|
15
15
|
end
|
16
|
+
|
17
|
+
module VersionConfig
|
18
|
+
def self.included(base)
|
19
|
+
base.send :include, Mongoid::Document
|
20
|
+
base.field :name, :type => String
|
21
|
+
base.field :values, :type => Hash, :default => Hash.new(0)
|
22
|
+
end
|
23
|
+
end
|
16
24
|
end
|
@@ -1,24 +1,23 @@
|
|
1
1
|
class Wherever
|
2
2
|
module Lookup
|
3
3
|
def create_lookup(name, keys)
|
4
|
-
|
5
|
-
lookup.keys = keys
|
6
|
-
lookup.save
|
4
|
+
lookup_class = DbStore.new_lookup(name, keys)
|
7
5
|
|
8
6
|
self.class.class_eval do
|
9
7
|
define_method "set_#{name}" do |version, values|
|
10
|
-
|
11
|
-
|
12
|
-
record.save
|
8
|
+
new_version?(name, version)
|
9
|
+
lookup_class.create(:name => version, :values => key_to_string(values))
|
13
10
|
recalculate if set_price_lookup(name, version)
|
14
11
|
end
|
15
12
|
end
|
16
13
|
|
17
14
|
self.class.class_eval do
|
18
15
|
define_method "get_#{name}" do |marker, data|
|
19
|
-
lookup
|
16
|
+
lookup = get_lookup(name)
|
17
|
+
lookup_data = lookup_class.where(:name => lookup.lookups[marker]).first
|
18
|
+
return 0 unless lookup_data
|
20
19
|
value_key = lookup.keys.map{|key| data[key]}.join('_')
|
21
|
-
|
20
|
+
lookup_data.values[value_key] || 0
|
22
21
|
end
|
23
22
|
end
|
24
23
|
end
|
@@ -32,8 +31,8 @@ class Wherever
|
|
32
31
|
|
33
32
|
def set_price_lookup(name, version=nil, keys=[])
|
34
33
|
lookup = get_lookup(name)
|
35
|
-
return false if lookup.
|
36
|
-
lookup.lookups[get_marker(keys)] = (version || lookup.
|
34
|
+
return false if lookup.current == version
|
35
|
+
lookup.lookups[get_marker(keys)] = (version || lookup.current)
|
37
36
|
lookup.save
|
38
37
|
end
|
39
38
|
|
@@ -56,11 +55,9 @@ class Wherever
|
|
56
55
|
return [lookup, lookup.versions.find_or_create_by(:name => lookup.lookups[marker])]
|
57
56
|
end
|
58
57
|
|
59
|
-
def
|
58
|
+
def new_version?(name, version)
|
60
59
|
lookup = get_lookup(name)
|
61
|
-
|
62
|
-
raise InvalidLookupSetter, "Lookup '#{version}' for '#{name}' already set" unless records.empty?
|
63
|
-
return [lookup, lookup.versions.find_or_create_by(:name => version)]
|
60
|
+
raise InvalidLookupSetter, "Lookup '#{version}' for '#{name}' already set" if lookup.lookups.values.include?(version)
|
64
61
|
end
|
65
62
|
|
66
63
|
def get_lookup(name)
|
data/wherever-positions.gemspec
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wherever-positions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 4
|
9
|
+
- 0
|
10
|
+
version: 0.4.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Henry
|