generated_schema_validations 0.1.2 → 0.2.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
  SHA256:
3
- metadata.gz: e54dc27fed92ad93653f938b7fdb48a6d06754d5fbd845d1d065d3bddfc970dc
4
- data.tar.gz: df96b1f41973aa786587402d092e508a74630ebcfe7fd646209a5908e94f0c01
3
+ metadata.gz: 5ecc9bdd7f100b8b94562439eb5e8016a0bbe93626f3f4b0d5f34542e57c71f8
4
+ data.tar.gz: 83cc0561a14c817b2e7132550e61e2e10bb2a9ac66ad8345303746c222b179aa
5
5
  SHA512:
6
- metadata.gz: fa9e551d29490824e11f5fd89061dc95a2e23dc6ae462ef6e17a03d21f78887243132dac9301a48ff7a9b5c6cd4a1c3a2a4dde5c5475f2c2e1dd6f0c2a75a773
7
- data.tar.gz: a49ca993efc1610e734ad2e680e0158891126bb384c1121ec444d382ba42ed126b72c645596e2ce8e557d004976564bd548cebfd5c66f668f5ce2a5067e56b71
6
+ metadata.gz: 8cc5c081c2351b6c53639a5401cb023135c08ee578d23a966583f6c59d644c3b092cdddff39d45fa617482bc431331a0ae59fc406e324fcc26c6aba2efcbea97
7
+ data.tar.gz: a77b5d69e3115c60f32d1f385678ed051bc58fa25fb2187b4871cccda34b57f9b11fb096e07449bf8bba3c9472d5328437b0af7ce06095e14008ea5220e65fd4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- generated_schema_validations (0.1.0)
4
+ generated_schema_validations (0.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -95,6 +95,10 @@ You can watch changes on `schema_validations.rb` to understand the generated val
95
95
 
96
96
  ## Changelog
97
97
 
98
+ ### 0.2.0
99
+
100
+ * Add validations of date and datetime columns to be in database range
101
+
98
102
  ### 0.1.2
99
103
 
100
104
  * Exclude columns in unique validations
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'generated_schema_validations'
5
- spec.version = '0.1.2'
5
+ spec.version = '0.2.0'
6
6
  spec.authors = ['Georg Limbach']
7
7
  spec.email = ['georg.limbach@lichtbit.com']
8
8
 
@@ -76,10 +76,12 @@ class GeneratedSchemaValidations::Table
76
76
 
77
77
  def datetime(name, column_options = {})
78
78
  null_validation(:datetime, name, column_options)
79
+ validates name, :date_time_in_db_range
79
80
  end
80
81
 
81
82
  def date(name, column_options = {})
82
83
  null_validation(:date, name, column_options)
84
+ validates name, :date_in_db_range
83
85
  end
84
86
 
85
87
  def boolean(name, column_options = {})
@@ -71,4 +71,24 @@ module SchemaValidations
71
71
  end
72
72
  end
73
73
  end
74
+
75
+ class DateTimeInDbRangeValidator < ActiveModel::EachValidator
76
+ def validate_each(record, attr_name, value)
77
+ return if value.nil?
78
+ return unless value.is_a?(DateTime) || value.is_a?(Time)
79
+ return if value.year.between?(-4711, 294275) # see https://www.postgresql.org/docs/9.3/datatype-datetime.html
80
+
81
+ record.errors.add(attr_name, :invalid, options)
82
+ end
83
+ end
84
+
85
+ class DateInDbRangeValidator < ActiveModel::EachValidator
86
+ def validate_each(record, attr_name, value)
87
+ return if value.nil?
88
+ return unless value.is_a?(Date)
89
+ return if value.year.between?(-4711, 5874896) # see https://www.postgresql.org/docs/9.3/datatype-datetime.html
90
+
91
+ record.errors.add(attr_name, :invalid, options)
92
+ end
93
+ end
74
94
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: generated_schema_validations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Georg Limbach
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-11 00:00:00.000000000 Z
11
+ date: 2022-01-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: After each migration it generates a file with some validations. Each
14
14
  active record should include this file and can uns generated validations.