mongoid-sequence 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+
3
+ require "active_support/concern"
4
+
5
+ module Mongoid
6
+ module Sequence
7
+ extend ActiveSupport::Concern
8
+
9
+ included do
10
+ set_callback :create, :before, :set_sequence
11
+ end
12
+
13
+ module ClassMethods
14
+ attr_accessor :sequence_fields
15
+
16
+ def sequence(field)
17
+ self.sequence_fields ||= []
18
+ self.sequence_fields << field
19
+ end
20
+ end
21
+
22
+ def set_sequence
23
+ sequences = self.db.collection("__sequences")
24
+ self.class.sequence_fields.each do |field|
25
+ next_sequence = sequences.find_and_modify(:query => {"_id" => "#{self.class.name.underscore}_#{field}"},
26
+ :update => {"$inc" => {"seq" => 1}},
27
+ :new => true,
28
+ :upsert => true)
29
+
30
+ self[field] = next_sequence["seq"]
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,5 @@
1
+ module Mongoid
2
+ module Sequence
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mongoid-sequence
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Gonçalo Silva
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-03-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: mongoid
16
+ requirement: &70300322553200 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '2.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70300322553200
25
+ - !ruby/object:Gem::Dependency
26
+ name: activesupport
27
+ requirement: &70300322551800 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '3.1'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70300322551800
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
38
+ requirement: &70300322551040 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '0.9'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70300322551040
47
+ description: Mongoid::Sequence gives you the ability to specify fields to behave like
48
+ a sequence number (exactly like the "id" column in conventional SQL flavors).
49
+ email:
50
+ - goncalossilva@gmail.com
51
+ executables: []
52
+ extensions: []
53
+ extra_rdoc_files: []
54
+ files:
55
+ - lib/mongoid/sequence.rb
56
+ - lib/mongoid/sequence/version.rb
57
+ homepage: https://github.com/goncalossilva/mongoid-sequence
58
+ licenses: []
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ segments:
70
+ - 0
71
+ hash: -1609728703556511403
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ segments:
79
+ - 0
80
+ hash: -1609728703556511403
81
+ requirements: []
82
+ rubyforge_project: ! '[none]'
83
+ rubygems_version: 1.8.17
84
+ signing_key:
85
+ specification_version: 3
86
+ summary: Specify fields to behave like a sequence number (exactly like the "id" column
87
+ in conventional SQL flavors).
88
+ test_files: []