unidom-common 1.9.2 → 1.10

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: 4a55892117ff845f398d300492f2cfa3a4667830
4
- data.tar.gz: a29d4636705703f4ebc6be67f4bfe6699310e606
3
+ metadata.gz: 82885ef3b635b592845732747e2969ff094fb704
4
+ data.tar.gz: 5dfb807730c4303586b7c434bc2adea8198a9614
5
5
  SHA512:
6
- metadata.gz: f5090d419d1f2ecc3d3dc55d00a6a2d05cd032447ba8f9844e9e6437183e72de130ac1d04fdbc6d088cc827188048c6426d713d41ca91d54a61b0aa8467df86a
7
- data.tar.gz: 4249e11d7d7e2e3a4e8d4a8f81360f167408f7690ea3f5f5c7370becd4c71f954081c8a06401ce718735e57bff7750a74c40f5558d6cbd63cdea0189874838bc
6
+ metadata.gz: a666ed1ac16160fcff279ea5d289b63f4b5b366eb6eef45cae6baf230feff72e0a15768149fd940c2cf9ad80631a64254519c8312e18682a95f7a73da471212e
7
+ data.tar.gz: 51499f8975ee71f6c40cb7e01a1c0029f58635b8bc230592290ee319e8745685e40d0bfaa1e0ca08e4c6201fbae18666db354439db65e21b9269176abfab2dde
data/README.md CHANGED
@@ -44,6 +44,21 @@ include Unidom::Common::Concerns::ModelExtension
44
44
 
45
45
 
46
46
 
47
+ ## Constants
48
+
49
+ ```ruby
50
+ Unidom::Common::NULL_UUID # '00000000-0000-0000-0000-000000000000'
51
+ Unidom::Common::MAXIMUM_AMOUNT # 1_000_000_000
52
+ Unidom::Common::SELF # '~'
53
+
54
+ Unidom::Common::OPENED_AT # Time.utc(1970)
55
+ Unidom::Common::CLOSED_AT # Time.utc(3000)
56
+
57
+ Unidom::Common::FROM_DATE # '1970-01-01'
58
+ Unidom::Common::THRU_DATE # '3000-01-01'
59
+
60
+ ```
61
+
47
62
  ## Model Extension concern
48
63
 
49
64
  ```ruby
@@ -7,10 +7,20 @@ module Unidom::Common::Concerns::Aes256Cryptor
7
7
 
8
8
  included do |includer|
9
9
 
10
+ ##
11
+ # 将明文 message 用秘钥 key 进行加密。如:
12
+ # encrypt 'clear text'
13
+ # 或
14
+ # encrypt 'clear text', key: aes256_key
10
15
  def encrypt(message, key: nil)
11
16
  self.class.encrypt message, key: key
12
17
  end
13
18
 
19
+ ##
20
+ # 将密文 encoded 用秘钥 key 进行解密。如:
21
+ # decrypt encoded
22
+ # 或
23
+ # decrypt encoded, key: aes256_key
14
24
  def decrypt(encoded, key: nil)
15
25
  self.class.decrypt encoded, key: key
16
26
  end
@@ -7,6 +7,9 @@ module Unidom::Common::Concerns::ArgumentValidation
7
7
 
8
8
  included do |includer|
9
9
 
10
+ ##
11
+ # 断言给定的参数 value 非空。如果为空,则抛出 ArgumentError 异常。如:
12
+ # assert_present! :person, person
10
13
  def assert_present!(name, value)
11
14
  raise ArgumentError.new("The #{name} argument is required.") if value.blank?
12
15
  end
@@ -10,6 +10,12 @@ module Unidom::Common::Concerns::ExactColumn
10
10
 
11
11
  module ClassMethods
12
12
 
13
+ ##
14
+ # 配置精确索引列。如:
15
+ # class SomeModel
16
+ # include Unidom::Common::Concerns::ExactColumn
17
+ # exact_column :phone_number, :identification_number
18
+ # end
13
19
  def exact_column(*names)
14
20
 
15
21
  exact_column_names = exact_column_names||[]
@@ -7,6 +7,16 @@ module Unidom::Common::Concerns::Md5Digester
7
7
 
8
8
  included do |includer|
9
9
 
10
+ ##
11
+ # 对明文 message 进行 MD-5 摘要, pepper 是用于增加混乱的内容。如:
12
+ # class SomeModel
13
+ # include Unidom::Common::Concerns::Md5Digester
14
+ # def some_method(param_1)
15
+ # digest param_1
16
+ # # 或者
17
+ # digest param_1, pepper: 'my_pepper'
18
+ # end
19
+ # end
10
20
  def digest(message, pepper: nil)
11
21
  self.class.digest message, pepper: pepper
12
22
  end
@@ -21,17 +21,6 @@ module Unidom::Common::Concerns::ModelExtension
21
21
  scope :alive, ->(living: true) { where defunct: !living }
22
22
  scope :dead, ->(defunct: true) { where defunct: defunct }
23
23
 
24
- =begin
25
- scope :notation_column_where, ->(name, operator, value) do
26
- operation = :like==operator ? { operator: 'ILIKE', value: "%#{value}%" } : { operator: operator.to_s, value: value }
27
- where "#{table_name}.notation -> 'columns' ->> '#{name}' #{operation[:operator]} :value", value: operation[:value]
28
- end
29
-
30
- scope :notation_boolean_column_where, ->(name, value) do
31
- where "(#{table_name}.notation -> 'columns' ->> '#{name}')::boolean = :value", value: (value ? true : false)
32
- end
33
- =end
34
-
35
24
  if columns_hash['ordinal'].present?&&:integer==columns_hash['ordinal'].type
36
25
  validates :ordinal, presence: true, numericality: { only_integer: true, greater_than: 0 }
37
26
  scope :ordinal_is, ->(ordinal) { where ordinal: ordinal }
@@ -142,16 +131,14 @@ module Unidom::Common::Concerns::ModelExtension
142
131
  end
143
132
  end
144
133
 
145
- =begin
146
- def assert_present!(name, value)
147
- raise ArgumentError.new("The #{name} argument is required.") if value.blank?
148
- end
149
- =end
150
-
151
134
  end
152
135
 
153
136
  module ClassMethods
154
137
 
138
+ ##
139
+ # 将模型对象或者 ID 转换成 ID 。如:
140
+ # to_id(person) # person.id
141
+ # to_id(person.id) # person.id
155
142
  def to_id(model)
156
143
  model.respond_to?(:id) ? model.id : model
157
144
  end
@@ -160,65 +147,6 @@ module Unidom::Common::Concerns::ModelExtension
160
147
  code.respond_to?(:code) ? code.code : code
161
148
  end
162
149
 
163
- =begin
164
- def notation_column(*names)
165
- names.each do |name|
166
- name = name.to_s
167
- instance_eval do
168
- define_method(name) do
169
- notation.try(:[], 'columns').try(:[], name)
170
- end
171
- define_method("#{name}=") do |value|
172
- notation['columns'] ||= {}
173
- notation['columns'][name] = value
174
- end
175
- end
176
- end
177
- end
178
-
179
- def notation_boolean_column(*names)
180
- names.each do |name|
181
- name = name.to_s
182
- instance_eval do
183
- define_method("#{name}?") do
184
- notation.try(:[], 'columns').try(:[], name)
185
- end
186
- define_method("#{name}=") do |value|
187
- notation['columns'] ||= {}
188
- notation['columns'][name] = value
189
- end
190
- end
191
- end
192
- end
193
- =end
194
-
195
- =begin
196
- def exact_column(*names)
197
- names.each do |name|
198
- name = name.to_s
199
- instance_eval do
200
- scope :"#{name}_is", ->(value) { where "#{name}_exact_signature" => exact_signature(self, name, value) }
201
- before_save do
202
- send "#{name}_exact_signature=", self.class.exact_signature(self.class, name, send(name))
203
- end
204
- end
205
- end
206
- end
207
- =end
208
-
209
- =begin
210
- def assert_present!(name, value)
211
- raise ArgumentError.new("The #{name} argument is required.") if value.blank?
212
- end
213
- =end
214
-
215
- =begin
216
- def exact_signature(klass, name, value)
217
- text = "#{Rails.application.secrets[:secret_key_base]}@#{Rails.root}/#{klass.table_name}##{name}=#{value}"
218
- "#{Digest::MD5.digest(text)}#{Digest::SHA512.digest(text)}"
219
- end
220
- =end
221
-
222
150
  end
223
151
 
224
152
  end
@@ -17,6 +17,9 @@ module Unidom::Common::Concerns::NotationColumn
17
17
 
18
18
  module ClassMethods
19
19
 
20
+ ##
21
+ # 定义 JSON 类型的列。如:
22
+ # notation_column :given_name, :family_name
20
23
  def notation_column(*names)
21
24
  names.each do |name|
22
25
  name = name.to_s
@@ -7,10 +7,30 @@ module Unidom::Common::Concerns::Sha1Digester
7
7
 
8
8
  included do |includer|
9
9
 
10
+ ##
11
+ # 对明文 message 进行 SHA-1 摘要, pepper 是用于增加混乱的内容。如:
12
+ # class SomeModel
13
+ # include Unidom::Common::Concerns::Sha1Digester
14
+ # def some_method(param_1)
15
+ # digest param_1
16
+ # # 或者
17
+ # digest param_1, pepper: 'my_pepper'
18
+ # end
19
+ # end
10
20
  def digest(message, pepper: nil)
11
21
  self.class.digest message, pepper: pepper
12
22
  end
13
23
 
24
+ ##
25
+ # 对明文 message 进行 SHA-1 摘要,并以16进制的形式返回, pepper 是用于增加混乱的内容。如:
26
+ # class SomeModel
27
+ # include Unidom::Common::Concerns::Sha1Digester
28
+ # def some_method(param_1)
29
+ # hex_digest param_1
30
+ # # 或者
31
+ # hex_digest param_1, pepper: 'my_pepper'
32
+ # end
33
+ # end
14
34
  def hex_digest(message, pepper: nil)
15
35
  self.class.hex_digest message, pepper: pepper
16
36
  end
@@ -7,10 +7,30 @@ module Unidom::Common::Concerns::Sha256Digester
7
7
 
8
8
  included do |includer|
9
9
 
10
+ ##
11
+ # 对明文 message 进行 SHA-256 摘要, pepper 是用于增加混乱的内容。如:
12
+ # class SomeModel
13
+ # include Unidom::Common::Concerns::Sha256Digester
14
+ # def some_method(param_1)
15
+ # digest param_1
16
+ # # 或者
17
+ # digest param_1, pepper: 'my_pepper'
18
+ # end
19
+ # end
10
20
  def digest(message, pepper: nil)
11
21
  self.class.digest message, pepper: pepper
12
22
  end
13
23
 
24
+ ##
25
+ # 对明文 message 进行 SHA-256 摘要,并以16进制的形式返回, pepper 是用于增加混乱的内容。如:
26
+ # class SomeModel
27
+ # include Unidom::Common::Concerns::Sha256Digester
28
+ # def some_method(param_1)
29
+ # hex_digest param_1
30
+ # # 或者
31
+ # hex_digest param_1, pepper: 'my_pepper'
32
+ # end
33
+ # end
14
34
  def hex_digest(message, pepper: nil)
15
35
  self.class.hex_digest message, pepper: pepper
16
36
  end
@@ -7,10 +7,30 @@ module Unidom::Common::Concerns::Sha2Digester
7
7
 
8
8
  included do |includer|
9
9
 
10
+ ##
11
+ # 对明文 message 进行 SHA-2 摘要, pepper 是用于增加混乱的内容。如:
12
+ # class SomeModel
13
+ # include Unidom::Common::Concerns::Sha2Digester
14
+ # def some_method(param_1)
15
+ # digest param_1
16
+ # # 或者
17
+ # digest param_1, pepper: 'my_pepper'
18
+ # end
19
+ # end
10
20
  def digest(message, pepper: nil)
11
21
  self.class.digest message, pepper: pepper
12
22
  end
13
23
 
24
+ ##
25
+ # 对明文 message 进行 SHA-2 摘要,并以16进制的形式返回, pepper 是用于增加混乱的内容。如:
26
+ # class SomeModel
27
+ # include Unidom::Common::Concerns::Sha2Digester
28
+ # def some_method(param_1)
29
+ # hex_digest param_1
30
+ # # 或者
31
+ # hex_digest param_1, pepper: 'my_pepper'
32
+ # end
33
+ # end
14
34
  def hex_digest(message, pepper: nil)
15
35
  self.class.hex_digest message, pepper: pepper
16
36
  end
@@ -7,10 +7,30 @@ module Unidom::Common::Concerns::Sha384Digester
7
7
 
8
8
  included do |includer|
9
9
 
10
+ ##
11
+ # 对明文 message 进行 SHA-384 摘要, pepper 是用于增加混乱的内容。如:
12
+ # class SomeModel
13
+ # include Unidom::Common::Concerns::Sha384Digester
14
+ # def some_method(param_1)
15
+ # digest param_1
16
+ # # 或者
17
+ # digest param_1, pepper: 'my_pepper'
18
+ # end
19
+ # end
10
20
  def digest(message, pepper: nil)
11
21
  self.class.digest message, pepper: pepper
12
22
  end
13
23
 
24
+ ##
25
+ # 对明文 message 进行 SHA-384 摘要,并以16进制的形式返回, pepper 是用于增加混乱的内容。如:
26
+ # class SomeModel
27
+ # include Unidom::Common::Concerns::Sha384Digester
28
+ # def some_method(param_1)
29
+ # hex_digest param_1
30
+ # # 或者
31
+ # hex_digest param_1, pepper: 'my_pepper'
32
+ # end
33
+ # end
14
34
  def hex_digest(message, pepper: nil)
15
35
  self.class.hex_digest message, pepper: pepper
16
36
  end
@@ -7,10 +7,30 @@ module Unidom::Common::Concerns::Sha512Digester
7
7
 
8
8
  included do |includer|
9
9
 
10
+ ##
11
+ # 对明文 message 进行 SHA-512 摘要, pepper 是用于增加混乱的内容。如:
12
+ # class SomeModel
13
+ # include Unidom::Common::Concerns::Sha512Digester
14
+ # def some_method(param_1)
15
+ # digest param_1
16
+ # # 或者
17
+ # digest param_1, pepper: 'my_pepper'
18
+ # end
19
+ # end
10
20
  def digest(message, pepper: nil)
11
21
  self.class.digest message, pepper: pepper
12
22
  end
13
23
 
24
+ ##
25
+ # 对明文 message 进行 SHA-512 摘要,并以16进制的形式返回, pepper 是用于增加混乱的内容。如:
26
+ # class SomeModel
27
+ # include Unidom::Common::Concerns::Sha512Digester
28
+ # def some_method(param_1)
29
+ # hex_digest param_1
30
+ # # 或者
31
+ # hex_digest param_1, pepper: 'my_pepper'
32
+ # end
33
+ # end
14
34
  def hex_digest(message, pepper: nil)
15
35
  self.class.hex_digest message, pepper: pepper
16
36
  end
data/lib/unidom/common.rb CHANGED
@@ -7,17 +7,29 @@ require 'unidom/common/engine_extension'
7
7
  module Unidom
8
8
  module Common
9
9
 
10
- NULL_UUID = '00000000-0000-0000-0000-000000000000'.freeze
11
- SELF = '~'.freeze
10
+ NULL_UUID = '00000000-0000-0000-0000-000000000000'.freeze
11
+ MAXIMUM_AMOUNT = 1_000_000_000.freeze
12
+ SELF = '~'.freeze
12
13
 
13
- #OPENED_AT = Time.utc(1970).freeze
14
- #CLOSED_AT = Time.utc(3000).freeze
14
+ OPENED_AT = Time.utc(1970).freeze
15
+ CLOSED_AT = Time.utc(3000).freeze
15
16
 
16
- #FROM_DATE = '1970-01-01'.freeze
17
- #THRU_DATE = '3000-01-01'.freeze
17
+ FROM_DATE = '1970-01-01'.freeze
18
+ THRU_DATE = '3000-01-01'.freeze
18
19
 
19
20
  mattr_accessor :options
20
21
 
22
+ ##
23
+ # 对 Unidom 的各个模块进行配置。如:
24
+ # Unidom::Common.configure do |options|
25
+ #
26
+ # # neglected_namespaces 列出的命名空间对应的 migration 不会被执行, model 也不会被加载。
27
+ # # 但 concern 、 validator 、 type 、 helper 、 controller 、 view 等都可以正常使用。
28
+ # options[:neglected_namespaces] = %w{
29
+ # Unidom::Action
30
+ # }
31
+ #
32
+ # end
21
33
  def self.configure
22
34
 
23
35
  options = {}
@@ -5,12 +5,6 @@ module Unidom
5
5
 
6
6
  config.autoload_paths += %W(
7
7
  #{config.root}/lib
8
- #{config.root}/app/models/unidom/common/concerns
9
- )
10
-
11
- config.eager_load_paths += %W(
12
- #{config.root}/lib
13
- #{config.root}/app/models/unidom/common/concerns
14
8
  )
15
9
 
16
10
  isolate_namespace ::Unidom::Common
@@ -1,5 +1,5 @@
1
1
  module Unidom
2
2
  module Common
3
- VERSION = '1.9.2'.freeze
3
+ VERSION = '1.10'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unidom-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.2
4
+ version: '1.10'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Topbit Du
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-21 00:00:00.000000000 Z
11
+ date: 2017-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails