unidom-common 0.9 → 1.0

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: 89054cdd5e576d37ca203c5c4eb55cfe4af8ba34
4
- data.tar.gz: b4ef244c16b09e4b29d3486e03f727c717036bd1
3
+ metadata.gz: ca933265b356b52f2fb29f19d9dcab614f6e8ba3
4
+ data.tar.gz: 05c043667b4cc91bfb1f2661188d7993cca150cd
5
5
  SHA512:
6
- metadata.gz: 181871dd083dcea57910525bcf5f6db6c46bae6946ffe33d5e187e6b9099ea4dd68ac9f7aa40187133c4c548aae14933175a76dd7bcac7b1043f4acc2e782f2a
7
- data.tar.gz: 5d3fdb55d1a6c822f54bcca42ed9024ebc9258e564431de8e78f7f5f47ed2144b9bd3c7edabd85bd94d21e546d6be462b9bc40411ea5d3e3ee340bb6e5bf3abd
6
+ metadata.gz: b7610e17aa6f8cf6bffff0e86345e86a4a7b57633f777c06923539f98c0171af8d2adce5b238df8b4c17d7a4787d6fcf6ab521b9a663300e3baa105385a8ec8f
7
+ data.tar.gz: 94945148b2d89576357fb44ecdaafabff8c9bfcc526bf77c95ccd12e9697ef646eb96557ec575afd529313a262cd6c172c875de7c27efbf6c7013cae8e668c7d
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](http://opensource.org/licenses/MIT)
4
4
  [![Gem Version](https://badge.fury.io/rb/unidom-common.svg)](https://badge.fury.io/rb/unidom-common)
5
+ [![Dependency Status](https://gemnasium.com/badges/github.com/topbitdu/unidom-common.svg)](https://gemnasium.com/github.com/topbitdu/unidom-common)
5
6
 
6
7
  Unidom (UNIfied Domain Object Model) is a series of domain model engines. The Common domain model engine includes the common models.
7
8
  Unidom (统一领域对象模型)是一系列的领域模型引擎。常用领域模型引擎包括一些常用的模型。
@@ -76,21 +77,59 @@ Project.notation_column_where(:creator_comment, '=', 'My first project.')
76
77
 
77
78
  project.enabled = true
78
79
  project.enabled? # true
80
+
81
+ Project.notation_boolean_column_where(:enabled, true) # All enabled projects
79
82
  ```
80
83
 
81
84
  ## ActiveRecord Migration Naming Convention
82
85
  ### Domain Models (200YMMDDHHMMSS)
86
+
87
+ <table class='table table-striped table-hover'>
88
+ <caption></caption>
89
+ <thead>
90
+ <tr>
91
+ <th>Ruby Gem</th>
92
+ <th>Migration</th>
93
+ <th>Model</th>
94
+ <th>Description</th>
95
+ </tr>
96
+ </thead>
97
+ <tbody>
98
+ <tr>
99
+ <td>unidom-common [![Gem Version](https://badge.fury.io/rb/unidom-common.svg)](https://badge.fury.io/rb/unidom-common)</td>
100
+ <td>200001DDHHMMSS</td>
101
+ <td>-</td>
102
+ <td>The Common domain model engine includes the common models. 常用领域模型引擎包括一些常用的模型。</td>
103
+ </tr>
104
+ <tr>
105
+ <td>unidom-visitor [![Gem Version](https://badge.fury.io/rb/unidom-visitor.svg)](https://badge.fury.io/rb/unidom-visitor)</td>
106
+ <td>200002DDHHMMSS</td>
107
+ <td>
108
+ - Identificating
109
+ - Authenticating
110
+ - Recognization
111
+ - User
112
+ - Guest
113
+ - Password
114
+ </td>
115
+ <td>The Visitor domain model engine includes Identificating, Authenticating, Recognization, Visitor (User &amp; Guest), and Password models. 访问者领域模型引擎包括身份标识、身份鉴别、身份识别、访问者(用户和游客)、密码的模型。</td>
116
+ </tr>
117
+ </tbody>
118
+ </table>
119
+
83
120
  * unidom-common: 200001DDHHMMSS
84
121
  * unidom-visitor: 200002DDHHMMSS
85
122
  * unidom-category: 200003DDHHMMSS
86
123
  * unidom-authorization: 200004DDHHMMSS
87
124
  * unidom-accounting: 200005DDHHMMSS
88
125
  * unidom-standard: 200006DDHHMMSS
126
+
89
127
  * unidom-party: 200101DDHHMMSS
90
128
  * unidom-certificate: 200102DDHHMMSS
91
129
  * unidom-contact: 200103DDHHMMSS
92
130
  * unidom-geo: 200104DDHHMMSS
93
131
  * unidom-property: 200105DDHHMMSS
132
+
94
133
  * unidom-article_number: 200201DDHHMMSS
95
134
  * unidom-product: 200202DDHHMMSS
96
135
  * unidom-price: 200203DDHHMMSS
@@ -100,6 +139,8 @@ project.enabled? # true
100
139
  * unidom-promotion: 200207DDHHMMSS
101
140
  * unidom-payment: 200208DDHHMMSS
102
141
 
142
+ * unidom-position: 200402DDHHMMSS
143
+
103
144
  ### Country Extensions (200YMM9NNNMMSS)
104
145
  The YMM part should be identical to the relative part of the Domain Models.
105
146
  The NNN is the numeric code of [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1 "codes for the names of countries, dependent territories, and special areas of geographical interest").
@@ -10,4 +10,4 @@
10
10
  // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
11
  // about supported directives.
12
12
  //
13
- //= require_tree .
13
+ //= require_self
@@ -10,6 +10,5 @@
10
10
  * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
11
  * file per style scope.
12
12
  *
13
- *= require_tree .
14
13
  *= require_self
15
14
  */
@@ -15,11 +15,11 @@ module Unidom
15
15
 
16
16
  scope :transited_to, ->(states) { where state: states }
17
17
 
18
- scope :valid_at, ->(now = Time.now) { where "? BETWEEN #{includer.table_name}.opened_at AND #{includer.table_name}.closed_at", now }
18
+ scope :valid_at, ->(now: Time.now) { where "? BETWEEN #{includer.table_name}.opened_at AND #{includer.table_name}.closed_at", now }
19
19
  scope :valid_duration, ->(range) { where "(#{includer.table_name}.opened_at BETWEEN ? AND ?) OR (#{includer.table_name}.closed_at <= ? AND #{includer.table_name}.closed_at >= ?)", range.min, range.max, range.max, range.min }
20
20
 
21
- scope :alive, ->(living = true) { where defunct: !living }
22
- scope :dead, ->(defunct = true) { where defunct: defunct }
21
+ scope :alive, ->(living: true) { where defunct: !living }
22
+ scope :dead, ->(defunct: true) { where defunct: defunct }
23
23
 
24
24
  scope :notation_column_where, ->(name, operator, value) do
25
25
  operation = :like==operator ? { operator: 'ILIKE', value: "%#{value}%" } : { operator: operator.to_s, value: value }
@@ -30,35 +30,35 @@ module Unidom
30
30
  where "(#{table_name}.notation -> 'columns' ->> '#{name}')::boolean = :value", value: (value ? true : false)
31
31
  end
32
32
 
33
- if columns_hash['ordinal'].present?
33
+ if columns_hash['ordinal'].present?&&:integer==columns_hash['ordinal'].type
34
34
  validates :ordinal, presence: true, numericality: { integer_only: true, greater_than: 0 }
35
35
  scope :ordinal_is, ->(ordinal) { where ordinal: ordinal }
36
36
  end
37
37
 
38
- if columns_hash['uuid'].present?
38
+ if columns_hash['uuid'].present?&&:uuid==columns_hash['uuid'].type
39
39
  validates :uuid, presence: true, length: { is: 36 }
40
40
  scope :uuid_is, ->(uuid) { where uuid: uuid }
41
41
  end
42
42
 
43
- if columns_hash['elemental'].present?
43
+ if columns_hash['elemental'].present?&&:boolean==columns_hash['elemental'].type
44
44
  scope :primary, ->(elemental = true) { where elemental: elemental }
45
45
  end
46
46
 
47
- if columns_hash['grade'].present?
47
+ if columns_hash['grade'].present?&&:integer==columns_hash['grade'].type
48
48
  validates :grade, presence: true, numericality: { integer_only: true, greater_than_or_equal_to: 0 }
49
49
  scope :grade_is, ->(grade) { where grade: grade }
50
50
  scope :grade_higher_than, ->(grade) { where "grade > :grade", grade: grade }
51
51
  scope :grade_lower_than, ->(grade) { where "grade < :grade", grade: grade }
52
52
  end
53
53
 
54
- if columns_hash['priority'].present?
54
+ if columns_hash['priority'].present?&&:integer==columns_hash['priority'].type
55
55
  validates :priority, presence: true, numericality: { integer_only: true, greater_than_or_equal_to: 0 }
56
56
  scope :priority_is, ->(priority) { where priority: priority }
57
57
  scope :priority_higher_than, ->(priority) { where "priority > :priority", priority: priority }
58
58
  scope :priority_lower_than, ->(priority) { where "priority < :priority", priority: priority }
59
59
  end
60
60
 
61
- if columns_hash['slug'].present?
61
+ if columns_hash['slug'].present?&&:string==columns_hash['slug'].type
62
62
  validates :slug, presence: true, length: { in: 1..columns_hash['slug'].limit }, uniqueness: true
63
63
  scope :slug_is, ->(slug) { where slug: slug }
64
64
  before_validation -> {
@@ -77,13 +77,15 @@ module Unidom
77
77
 
78
78
  name = column_name.to_s
79
79
 
80
- if 'code'==name or name.ends_with? '_code'
80
+ if ('code'==name||name.ends_with?('_code'))&&:string==columns_hash[name].type
81
81
  class_eval do
82
82
  if columns_hash[name].null
83
83
  validates name.to_sym, allow_blank: true, length: { maximum: columns_hash[name].limit }
84
84
  scope "#{name}_length_is".to_sym, ->(length) { where "LENGTH(#{name}) = :length", length: length }
85
- else
85
+ elsif columns_hash[name].limit<=4
86
86
  validates name.to_sym, presence: true, length: { is: columns_hash[name].limit }
87
+ else
88
+ validates name.to_sym, presence: true, length: { maximum: columns_hash[name].limit }
87
89
  end
88
90
  scope "#{name}d_as".to_sym, ->(code) { where name => code }
89
91
  scope "not_#{name}d_as".to_sym, ->(code) { where.not name => code }
@@ -92,7 +94,7 @@ module Unidom
92
94
  end
93
95
  end
94
96
 
95
- if name.ends_with? '_at'
97
+ if name.ends_with?('_at')&&:datetime==columns_hash[name].type
96
98
  matched = /\A(.+)_at\z/.match name
97
99
  class_eval do
98
100
  scope :"#{matched[1]}_on", ->(date) { where name => date.beginning_of_day..date.end_of_day }
@@ -104,7 +106,7 @@ module Unidom
104
106
  end
105
107
  end
106
108
 
107
- if name.ends_with? '_state'
109
+ if name.ends_with?('_state')&&:string==columns_hash[name].type
108
110
  matched = /\A(.+)_state\z/.match name
109
111
  class_eval do
110
112
  scope :"#{matched[1]}_transited_to", ->(states) { where name => states }
@@ -2,13 +2,14 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>Common</title>
5
- <%= stylesheet_link_tag 'unidom/common/application', media: 'all' %>
6
- <%= javascript_include_tag 'unidom/common/application' %>
5
+ <%= stylesheet_link_tag 'unidom/common/application', media: 'all' %>
7
6
  <%= csrf_meta_tags %>
8
7
  </head>
9
8
  <body>
10
9
 
11
10
  <%= yield %>
12
11
 
12
+ <%= javascript_include_tag 'unidom/common/application' %>
13
+
13
14
  </body>
14
15
  </html>
@@ -1,5 +1,5 @@
1
1
  module Unidom
2
2
  module Common
3
- VERSION = '0.9'.freeze
3
+ VERSION = '1.0'.freeze
4
4
  end
5
5
  end
data/lib/unidom/common.rb CHANGED
@@ -2,7 +2,15 @@ require 'unidom/common/engine'
2
2
 
3
3
  module Unidom
4
4
  module Common
5
+
5
6
  NULL_UUID = '00000000-0000-0000-0000-000000000000'.freeze
6
7
  SELF = '~'.freeze
8
+
9
+ #OPENED_AT = Time.utc(1970).freeze
10
+ #CLOSED_AT = Time.utc(3000).freeze
11
+
12
+ #FROM_DATE = '1970-01-01'.freeze
13
+ #THRU_DATE = '3000-01-01'.freeze
14
+
7
15
  end
8
16
  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: '0.9'
4
+ version: '1.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Topbit Du
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-02 00:00:00.000000000 Z
11
+ date: 2016-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '11.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: '11.0'
69
69
  description: Unidom (UNIfied Domain Object Model) is a series of domain model engines.
70
70
  The Common domain model engine includes the common models. Unidom (统一领域对象模型)是一系列的领域模型引擎。常用领域模型引擎包括一些常用的模型。
71
71
  email:
@@ -110,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  version: '0'
111
111
  requirements: []
112
112
  rubyforge_project:
113
- rubygems_version: 2.4.5.1
113
+ rubygems_version: 2.6.4
114
114
  signing_key:
115
115
  specification_version: 4
116
116
  summary: Unidom Common Domain Model Engine 常用领域模型引擎