generated_schema_validations 0.1.2 → 0.2.0

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.
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.