mongoid-sequence 0.0.1

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.
@@ -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: []