curator 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -25,7 +25,7 @@ module Curator
25
25
  index[indexed_value] << key unless index[indexed_value].include?(key)
26
26
  end
27
27
 
28
- OpenStruct.new(:key => key)
28
+ key
29
29
  end
30
30
 
31
31
  def self.delete(collection_name, key)
@@ -28,8 +28,7 @@ module Curator
28
28
  options.fetch(:index, {}).each do |index_name, index_value|
29
29
  collection.ensure_index index_name
30
30
  end
31
- object_id = collection.save document
32
- Hash[:key => object_id]
31
+ collection.save document
33
32
  end
34
33
 
35
34
  def self.delete(collection_name, id)
@@ -39,9 +38,11 @@ module Curator
39
38
 
40
39
  def self.find_by_index(collection_name, field, query)
41
40
  return [] if query.nil?
42
-
41
+
42
+ exp = {}
43
+ exp[field] = query
43
44
  collection = _collection(collection_name)
44
- documents = collection.find(field.to_sym => query)
45
+ documents = collection.find(_normalize_query(exp))
45
46
  documents.map {|doc| normalize_document(doc) }
46
47
  end
47
48
 
@@ -71,6 +72,18 @@ module Curator
71
72
  key = doc.delete '_id'
72
73
  Hash[:key => key, :data => doc]
73
74
  end
75
+
76
+ def self._normalize_query(query)
77
+ query.inject({}) do |hash, (key, value)|
78
+ case value
79
+ when Range
80
+ hash[key] = {'$gte' => value.first, '$lt' => value.last}
81
+ else
82
+ hash[key] = value
83
+ end
84
+ hash
85
+ end
86
+ end
74
87
  end
75
88
  end
76
89
  end
@@ -74,8 +74,10 @@ module Curator
74
74
  hash[:key] = object.id
75
75
  data_store.save(hash)
76
76
  else
77
- object.instance_variable_set("@id", data_store.save(hash).key)
77
+ object.instance_variable_set("@id", data_store.save(hash))
78
78
  end
79
+
80
+ object
79
81
  end
80
82
 
81
83
  def serialize(object)
@@ -35,15 +35,15 @@ module Curator
35
35
  end
36
36
 
37
37
  def self.save(options)
38
- result = super
38
+ key = super
39
39
 
40
40
  unless @exclude_from_reset
41
41
  @bucket_names ||= {}
42
42
  @bucket_names[options[:collection_name]] ||= []
43
- @bucket_names[options[:collection_name]] << result.key
43
+ @bucket_names[options[:collection_name]] << key
44
44
  end
45
45
 
46
- result
46
+ key
47
47
  end
48
48
  end
49
49
  end
@@ -28,7 +28,8 @@ module Curator
28
28
  options.fetch(:index, {}).each do |index_name, index_value|
29
29
  object.indexes["#{index_name}_bin"] << index_value
30
30
  end
31
- object.store
31
+ result = object.store
32
+ result.key
32
33
  end
33
34
 
34
35
  def self.find_by_key(bucket_name, key)
@@ -0,0 +1,19 @@
1
+ require 'rails/generators/named_base'
2
+
3
+ module Curator
4
+ module Generators
5
+ class ModelGenerator < Rails::Generators::NamedBase
6
+ desc 'Creates a Curator model in app/models'
7
+ argument :attributes, :type => :array, :default => [], :banner => "field field"
8
+ check_class_collision
9
+
10
+ source_root File.expand_path("../templates", __FILE__)
11
+
12
+ def create_model_file
13
+ template 'model.rb', File.join('app/models', class_path, "#{file_name}.rb")
14
+ end
15
+
16
+ hook_for :test_framework
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,8 @@
1
+ <% module_namespacing do -%>
2
+ class <%= class_name %>
3
+ include Curator::Model
4
+ <% unless attributes.empty? -%>
5
+ attr_accessor <%= attributes.map {|a| ":#{a.name}" }.join(', ') %>
6
+ <% end -%>
7
+ end
8
+ <% end -%>
@@ -0,0 +1,19 @@
1
+ require 'rails/generators/named_base'
2
+
3
+ module Curator
4
+ module Generators
5
+ class RepositoryGenerator < Rails::Generators::NamedBase
6
+ desc 'Creates a Curator repository in app/repositories'
7
+ argument :attributes, :type => :array, :default => [], :banner => "field field"
8
+ check_class_collision :suffix => 'Repository'
9
+
10
+ source_root File.expand_path("../templates", __FILE__)
11
+
12
+ def create_model_file
13
+ template 'repository.rb', File.join('app/repositories', class_path, "#{file_name}.rb")
14
+ end
15
+
16
+ hook_for :test_framework
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,8 @@
1
+ <% module_namespacing do -%>
2
+ class <%= class_name %>Repository
3
+ include Curator::Repository
4
+ <% unless attributes.empty? -%>
5
+ indexed_fields <%= attributes.map {|a| ":#{a.name}" }.join(', ') %>
6
+ <% end -%>
7
+ end
8
+ <% end -%>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-07 00:00:00.000000000 Z
12
+ date: 2012-04-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &70259654638820 !ruby/object:Gem::Requirement
16
+ requirement: &70105518206320 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70259654638820
24
+ version_requirements: *70105518206320
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activemodel
27
- requirement: &70259654637640 !ruby/object:Gem::Requirement
27
+ requirement: &70105518204680 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.0.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70259654637640
35
+ version_requirements: *70105518204680
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: json
38
- requirement: &70259654636680 !ruby/object:Gem::Requirement
38
+ requirement: &70105518203680 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70259654636680
46
+ version_requirements: *70105518203680
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: riak-client
49
- requirement: &70259654634820 !ruby/object:Gem::Requirement
49
+ requirement: &70105526443500 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: 1.0.0
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70259654634820
57
+ version_requirements: *70105526443500
58
58
  description: Model and repository framework
59
59
  email: code@getbraintree.com
60
60
  executables: []
@@ -76,6 +76,10 @@ files:
76
76
  - lib/curator/riak/configuration.rb
77
77
  - lib/curator/riak/data_store.rb
78
78
  - lib/curator.rb
79
+ - lib/rails/generators/curator/model/model_generator.rb
80
+ - lib/rails/generators/curator/model/templates/model.rb
81
+ - lib/rails/generators/curator/repository/repository_generator.rb
82
+ - lib/rails/generators/curator/repository/templates/repository.rb
79
83
  homepage: http://github.com/braintree/curator
80
84
  licenses: []
81
85
  post_install_message: