abbish_sequel_plugins 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 853e613c24a604f65481ea72bb0eb1901830006c
4
- data.tar.gz: 011fb670c37f13cb9bec898dd7605de31a179542
3
+ metadata.gz: 0ee09a952841117aad025b955e74db5ce3f0c407
4
+ data.tar.gz: 8295bb4936daca837c4cafcb7d941b7999665176
5
5
  SHA512:
6
- metadata.gz: 7a64a2e60b10087b94727989cfe3f515490d96c303dc78082bc83be68e8fc83c26b362c1b98d2194eb867b510651e4e8615889ab58ce7b2aa2395c738a2fd7d0
7
- data.tar.gz: 7b3cf541678cd9067a3228364d5190597cfab186e1528c1eb376c1ab7d36a3bfc9566da09b89e86b39234b1e349ed7df00719c311194f01579008bfe6d1a7455
6
+ metadata.gz: 037cadecd214d0a08126dafa9deb1dac237b219791763ba396d47577d16b6d4e3fd1c65b61dcb93a80432997a69f81119e619a1b91aa1939b806781f0dbb5fb3
7
+ data.tar.gz: 968a490e455c62705595ebd370955fa0c5481184d7e1e4fe49fe3f137fb5065b2ccb856125d18ff9deb3dd367580936a3ccef79a21306bd51e0ce27d7f1103b5
data/CHANGELOG.md ADDED
@@ -0,0 +1,4 @@
1
+ ### Release 0.0.5
2
+ 1. Complete document
3
+ 2. Add record feature column check for all plugins before using
4
+ 3. Rename :column_xxx to :feature_column_xxx in plugin options
data/README.md CHANGED
@@ -18,51 +18,71 @@ Or install it yourself as:
18
18
 
19
19
  $ gem install abbish_sequel_plugins
20
20
 
21
- ## Usage
22
-
23
- ###RecordProtection
21
+ ## Plugin super_record
22
+ ###protection
23
+ Protecting record cannot destroy and raise error when destroy it
24
24
  ```ruby
25
25
  class Model < Sequel::Model(:test_table)
26
- plugin Abbish::Sequel::Plugins::Model::RecordProtection, { options }
26
+ plugin Abbish::Sequel::Plugins::Model::SuperRecord::Protection { options }
27
27
  end
28
28
  ```
29
29
  Default options
30
30
  ```ruby
31
31
  {
32
32
  :enabled => true,
33
- :column_protected => :record_protected,
33
+ :feature_column_protected => :record_protected,
34
34
  :raise_protected_message => 'Cannot destroy protected record'
35
35
  }
36
36
  ```
37
+ Usage
38
+ ```ruby
39
+ model = Model.create(:table_field => 'test')
40
+ ```
41
+ use ```set_record_protected!``` to set record being protected
42
+ ```ruby
43
+ model.set_record_protected!
44
+ ```
45
+ or use ```set_record_protected``` and ```save``` to set record being protected
46
+ ```ruby
47
+ model.set_record_protected
48
+ model.save
49
+ ```
50
+ ```ruby
51
+ # Destroy a protected record will raise a ProtectedError
52
+ model.destroy
53
+ ```
37
54
  ======
38
- ###RecordTimestamp
55
+ ###timestamp
56
+ Automatically add current date time to record when record was created and updated
39
57
  ```ruby
40
58
  class Model < Sequel::Model(:test_table)
41
- plugin Abbish::Sequel::Plugins::Model::RecordTimestamp { options }
59
+ plugin Abbish::Sequel::Plugins::Model::SuperRecord::Timestamp { options }
42
60
  end
43
61
  ```
44
62
  Default options
45
63
  ```ruby
46
64
  {
47
65
  :enabled => true,
48
- :column_created_time => :record_created_time,
49
- :column_updated_time => :record_updated_time
66
+ :feature_column_created_time => :record_created_time,
67
+ :feature_column_updated_time => :record_updated_time
50
68
  }
51
69
  ```
52
70
  ======
53
- ###RecordVersion
71
+ ###version
72
+ Automatically generate hash string be record version when record was created and updated
54
73
  ```ruby
55
74
  class Model < Sequel::Model(:test_table)
56
- plugin Abbish::Sequel::Plugins::Model::RecordVersion
75
+ plugin Abbish::Sequel::Plugins::Model::SuperRecord::Version
57
76
  end
58
77
  ```
59
78
  Default options
60
79
  ```ruby
61
80
  {
62
81
  :enabled => true,
63
- :column_version => :record_version
82
+ :feature_column_version => :record_version
64
83
  }
65
84
  ```
85
+ ======
66
86
  ## Contributing
67
87
 
68
88
  1. Fork it ( https://github.com/abbish/abbish_sequel_plugins/fork )
data/ROADMAP.md ADDED
File without changes
@@ -1,12 +1,10 @@
1
1
  # coding: utf-8
2
- require File.dirname(__FILE__) + '/model/record_version'
3
- require File.dirname(__FILE__) + '/model/record_protection'
4
- require File.dirname(__FILE__) + '/model/record_timestamp'
2
+ require File.dirname(__FILE__) + '/model/super_record'
5
3
 
6
4
  module Abbish
7
5
  module Sequel
8
6
  module Plugins
9
- Version = '0.0.4'
7
+ Version = '0.0.5'
10
8
  end
11
9
  end
12
10
  end
@@ -0,0 +1,14 @@
1
+ require File.dirname(__FILE__) + '/super_record/version'
2
+ require File.dirname(__FILE__) + '/super_record/protection'
3
+ require File.dirname(__FILE__) + '/super_record/timestamp'
4
+
5
+ module Abbish
6
+ module Sequel
7
+ module Plugins
8
+ module Model
9
+ module SuperRecord
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,59 @@
1
+ module Abbish
2
+ module Sequel
3
+ module Plugins
4
+ module Model
5
+ module SuperRecord
6
+ module Protection
7
+ ProtectedError = Class.new(::StandardError)
8
+ def self.configure(model, options = {})
9
+ options = {
10
+ :enabled => true,
11
+ :feature_column_protected => :record_protected,
12
+ :raise_protected_message => 'Cannot destroy protected record',
13
+ }.merge(options)
14
+
15
+ model.instance_eval do
16
+ self.record_protection_options = options
17
+ end
18
+ end
19
+
20
+ module ClassMethods
21
+ def record_protection_options=(options)
22
+ @record_protection_options = options
23
+ end
24
+
25
+ def record_protection_options
26
+ @record_protection_options
27
+ end
28
+ end
29
+
30
+ module InstanceMethods
31
+
32
+ def record_protected?
33
+ self.class.record_protection_options[:enabled] ? send("#{self.class.record_protection_options[:feature_column_protected]}") == 1 : false
34
+ end
35
+
36
+ def set_record_protected
37
+ send("#{self.class.record_protection_options[:feature_column_protected]}=", 1) if self.class.record_protection_options[:enabled]
38
+ end
39
+
40
+ def set_record_protected!
41
+ if self.class.record_protection_options[:enabled]
42
+ set_record_protected
43
+ self.save
44
+ end
45
+ end
46
+
47
+ def before_destroy
48
+ super
49
+ raise ProtectedError, self.class.record_protection_options[:raise_protected_message] if record_protected?
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+
@@ -0,0 +1,55 @@
1
+ module Abbish
2
+ module Sequel
3
+ module Plugins
4
+ module Model
5
+ module SuperRecord
6
+ module Timestamp
7
+ def self.configure(model, options = {})
8
+ options = {
9
+ :enabled => true,
10
+ :feature_column_created_time => :record_created_time,
11
+ :feature_column_updated_time => :record_updated_time,
12
+ }.merge(options)
13
+
14
+ model.instance_eval do
15
+ self.record_timestamp_options = options
16
+ end
17
+ end
18
+
19
+ module ClassMethods
20
+ def record_timestamp_options=(options)
21
+ @record_timestamp_options = options
22
+ end
23
+
24
+ def record_timestamp_options
25
+ @record_timestamp_options
26
+ end
27
+ end
28
+
29
+ module InstanceMethods
30
+
31
+ def before_create
32
+ send("#{self.class.record_timestamp_options[:feature_column_created_time]}=", _get_time) if self.class.record_timestamp_options[:enabled]
33
+ super
34
+ end
35
+
36
+ def before_update
37
+ send("#{self.class.record_timestamp_options[:feature_column_updated_time]}=", _get_time) if self.class.record_timestamp_options[:enabled] if self.modified?
38
+ super
39
+ end
40
+
41
+ private
42
+
43
+ def _get_time
44
+ return Time.now
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+
55
+
@@ -0,0 +1,51 @@
1
+ module Abbish
2
+ module Sequel
3
+ module Plugins
4
+ module Model
5
+ module SuperRecord
6
+ module Version
7
+ def self.configure(model, options = {})
8
+ options = {
9
+ :enabled => true,
10
+ :feature_column_version => :record_version,
11
+ }.merge(options)
12
+
13
+ model.instance_eval do
14
+ self.record_version_options = options
15
+ end
16
+ end
17
+
18
+ module ClassMethods
19
+ def record_version_options=(options)
20
+ @record_version_options = options
21
+ end
22
+
23
+ def record_version_options
24
+ @record_version_options
25
+ end
26
+ end
27
+
28
+ module InstanceMethods
29
+
30
+ def before_create
31
+ send("#{self.class.record_version_options[:feature_column_version]}=", _get_version) if self.class.record_version_options[:enabled]
32
+ super
33
+ end
34
+
35
+ def before_update
36
+ send("#{self.class.record_version_options[:feature_column_version]}=", _get_version) if self.class.record_version_options[:enabled] if self.modified?
37
+ super
38
+ end
39
+
40
+ private
41
+
42
+ def _get_version
43
+ return Digest::MD5.hexdigest Time.now.to_f.to_s
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
data/spec/lib/model.rb CHANGED
@@ -14,7 +14,7 @@ Sequel::Model.db.create_table :test_table do
14
14
  end
15
15
 
16
16
  class Model < Sequel::Model(:test_table)
17
- plugin Abbish::Sequel::Plugins::Model::RecordProtection
18
- plugin Abbish::Sequel::Plugins::Model::RecordTimestamp
19
- plugin Abbish::Sequel::Plugins::Model::RecordVersion
17
+ plugin Abbish::Sequel::Plugins::Model::SuperRecord::Protection
18
+ plugin Abbish::Sequel::Plugins::Model::SuperRecord::Timestamp
19
+ plugin Abbish::Sequel::Plugins::Model::SuperRecord::Version
20
20
  end
@@ -31,7 +31,7 @@ describe 'RecordProtectionSpec' do
31
31
  @model.set_record_protected!
32
32
 
33
33
  model = Model[@model.id]
34
- proc { model.destroy }.must_raise Abbish::Sequel::Plugins::Model::RecordProtectedError
34
+ proc { model.destroy }.must_raise Abbish::Sequel::Plugins::Model::SuperRecord::Protection::ProtectedError
35
35
  end
36
36
  end
37
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abbish_sequel_plugins
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - abbish
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-21 00:00:00.000000000 Z
11
+ date: 2015-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -74,16 +74,19 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - ".gitignore"
77
+ - CHANGELOG.md
77
78
  - Gemfile
78
79
  - Gemfile.lock
79
80
  - LICENSE.txt
80
81
  - README.md
82
+ - ROADMAP.md
81
83
  - Rakefile
82
84
  - abbish_sequel_plugins.gemspec
83
85
  - lib/abbish_sequel_plugins.rb
84
- - lib/model/record_protection.rb
85
- - lib/model/record_timestamp.rb
86
- - lib/model/record_version.rb
86
+ - lib/model/super_record.rb
87
+ - lib/model/super_record/protection.rb
88
+ - lib/model/super_record/timestamp.rb
89
+ - lib/model/super_record/version.rb
87
90
  - spec/lib/model.rb
88
91
  - spec/record_protection_spec.rb
89
92
  - spec/record_timestamp_spec.rb
@@ -1,58 +0,0 @@
1
- module Abbish
2
- module Sequel
3
- module Plugins
4
- module Model
5
-
6
- RecordProtectedError = Class.new(::StandardError)
7
-
8
- module RecordProtection
9
- def self.configure(model, options = {})
10
- options = {
11
- :enabled => true,
12
- :column_protected => :record_protected,
13
- :raise_protected_message => 'Cannot destroy protected record',
14
- }.merge(options)
15
-
16
- model.instance_eval do
17
- self.record_protection_options = options
18
- end
19
- end
20
-
21
- module ClassMethods
22
- def record_protection_options=(options)
23
- @record_protection_options = options
24
- end
25
-
26
- def record_protection_options
27
- @record_protection_options
28
- end
29
- end
30
-
31
- module InstanceMethods
32
-
33
- def record_protected?
34
- self.class.record_protection_options[:enabled] ? send("#{self.class.record_protection_options[:column_protected]}") == 1 : false
35
- end
36
-
37
- def set_record_protected
38
- send("#{self.class.record_protection_options[:column_protected]}=", 1) if self.class.record_protection_options[:enabled]
39
- end
40
-
41
- def set_record_protected!
42
- if self.class.record_protection_options[:enabled]
43
- set_record_protected
44
- self.save
45
- end
46
- end
47
-
48
- def before_destroy
49
- super
50
- raise RecordProtectedError, self.class.record_protection_options[:raise_protected_message] if record_protected?
51
- end
52
- end
53
- end
54
- end
55
- end
56
- end
57
- end
58
-
@@ -1,52 +0,0 @@
1
- module Abbish
2
- module Sequel
3
- module Plugins
4
- module Model
5
- module RecordTimestamp
6
- def self.configure(model, options = {})
7
- options = {
8
- :enabled => true,
9
- :column_created_time => :record_created_time,
10
- :column_updated_time => :record_updated_time,
11
- }.merge(options)
12
-
13
- model.instance_eval do
14
- self.record_timestamp_options = options
15
- end
16
- end
17
-
18
- module ClassMethods
19
- def record_timestamp_options=(options)
20
- @record_timestamp_options = options
21
- end
22
-
23
- def record_timestamp_options
24
- @record_timestamp_options
25
- end
26
- end
27
-
28
- module InstanceMethods
29
-
30
- def before_create
31
- self.record_created_time = _get_time if self.class.record_timestamp_options[:enabled]
32
- super
33
- end
34
-
35
- def before_update
36
- self.record_updated_time = _get_time if self.class.record_timestamp_options[:enabled] if self.modified?
37
- super
38
- end
39
-
40
- private
41
-
42
- def _get_time
43
- return Time.now
44
- end
45
- end
46
- end
47
- end
48
- end
49
- end
50
- end
51
-
52
-
@@ -1,50 +0,0 @@
1
- module Abbish
2
- module Sequel
3
- module Plugins
4
- module Model
5
- module RecordVersion
6
- def self.configure(model, options = {})
7
- options = {
8
- :enabled => true,
9
- :column_version => :record_version,
10
- }.merge(options)
11
-
12
- model.instance_eval do
13
- self.record_version_options = options
14
- end
15
- end
16
-
17
- module ClassMethods
18
- def record_version_options=(options)
19
- @record_version_options = options
20
- end
21
-
22
- def record_version_options
23
- @record_version_options
24
- end
25
- end
26
-
27
- module InstanceMethods
28
-
29
- def before_create
30
- self.record_version = _get_version if self.class.record_version_options[:enabled]
31
- super
32
- end
33
-
34
- def before_update
35
- self.record_version = _get_version if self.class.record_version_options[:enabled] if self.modified?
36
- super
37
- end
38
-
39
- private
40
-
41
- def _get_version
42
- return Digest::MD5.hexdigest Time.now.to_f.to_s
43
- end
44
- end
45
- end
46
- end
47
- end
48
- end
49
- end
50
-