mongoid-autoinc 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -87,6 +87,25 @@ This allows for more flexible assignment of your increment number:
87
87
 
88
88
  end
89
89
 
90
+ === Seeds
91
+
92
+ You can use a seed to start the incrementing field at a given value. The first
93
+ document created will start at `seed + 1`.
94
+
95
+ class Vehicle
96
+ include Mongoid::Document
97
+ include Mongoid::Autoinc
98
+
99
+ field :model
100
+ field :vin
101
+
102
+ increments :vin, seed: 1000
103
+
104
+ end
105
+
106
+ car = Vehicle.new(model: "Coupe")
107
+ car.vin # 1001
108
+
90
109
  === Development
91
110
 
92
111
  $ gem install bundler (if you don't have it)
@@ -96,7 +115,7 @@ This allows for more flexible assignment of your increment number:
96
115
  == Contributions
97
116
 
98
117
  Thanks to Johnny Shields (@johnnyshields) for implementing proc support to scopes
99
-
118
+ And to Marcus Gartner (@mgartner) for implementing the seed functionality
100
119
 
101
120
  == Copyright
102
121
 
data/lib/autoinc.rb CHANGED
@@ -44,9 +44,10 @@ module Mongoid
44
44
 
45
45
  def increment!(field, options)
46
46
  scope_key = options[:scope] ? evaluate_scope(options[:scope]) : nil
47
+ seed = options[:seed]
47
48
  write_attribute(
48
49
  field.to_sym, Mongoid::Autoinc::Incrementor.new(
49
- self.class.model_name, field, scope_key).inc
50
+ self.class.model_name, field, scope_key, seed).inc
50
51
  )
51
52
  end
52
53
 
@@ -3,13 +3,15 @@ module Mongoid
3
3
  module Autoinc
4
4
 
5
5
  class Incrementor
6
- attr_accessor :model_name, :field_name, :scope_key, :collection
6
+ attr_accessor :model_name, :field_name, :scope_key, :collection, :seed
7
7
 
8
- def initialize(model_name, field_name, scope_key=nil)
8
+ def initialize(model_name, field_name, scope_key=nil, seed=nil)
9
9
  self.model_name = model_name
10
10
  self.field_name = field_name.to_s
11
11
  self.scope_key = scope_key
12
12
  self.collection = ::Mongoid.default_session['auto_increment_counters']
13
+ self.seed = seed
14
+ create if seed && !exists?
13
15
  end
14
16
 
15
17
  def key
@@ -28,6 +30,16 @@ module Mongoid
28
30
  )['c']
29
31
  end
30
32
 
33
+ private
34
+
35
+ def exists?
36
+ collection.find('_id' => key).count > 0
37
+ end
38
+
39
+ def create
40
+ collection.insert({'_id' => key, 'c' => seed})
41
+ end
42
+
31
43
  end
32
44
 
33
45
  end
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module Autoinc
3
- VERSION = "0.4.0"
3
+ VERSION = "0.5.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: mongoid-autoinc
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.4.0
5
+ version: 0.5.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Robert Beekman
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-03-25 00:00:00.000000000 Z
14
+ date: 2013-05-15 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  version_requirements: !ruby/object:Gem::Requirement
@@ -119,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
119
119
  version: '0'
120
120
  segments:
121
121
  - 0
122
- hash: -1490664978926103703
122
+ hash: 332714116938446976
123
123
  none: false
124
124
  required_rubygems_version: !ruby/object:Gem::Requirement
125
125
  requirements:
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
128
  version: '0'
129
129
  segments:
130
130
  - 0
131
- hash: -1490664978926103703
131
+ hash: 332714116938446976
132
132
  none: false
133
133
  requirements: []
134
134
  rubyforge_project: