generated_schema_validations 0.5.2 → 0.5.4

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: 215e8be8d62e4824a9ebbd7eeb4e98152d7ca387b51737869a591fb563dcb1c9
4
- data.tar.gz: ac0d3f763d6dc2fc810c6223154a2177cc7c72e9475a4eb2d6de452a74f82887
3
+ metadata.gz: fd9e8c56b1df3693d2fcf47a61b8904277a1fbfc3c2c0dcf71bc2f30baa30097
4
+ data.tar.gz: 7f68dab0123374dd86106df0f462e5d68fd8ec227938378799aa377bbe281c5d
5
5
  SHA512:
6
- metadata.gz: 831c29092e640e421b03bc457c314fe440cb03d42ebd913736803ec12799246dc35436e573b78dce18972de857ee78d33e5b02974c980e7fbf75eca295baaa03
7
- data.tar.gz: 196cc074bed35df2118ab7c3fbba5e3bafde6c9bdd9f5a73ddea86f749f0a26426fecc09bf2f0e686f2d9d99fea207a190de51d9aa125dd8101aeca6325afd1d
6
+ metadata.gz: aa9eb0de4a2144fe689bd34e5cd63f75853592cf2da93b7a30034f389283b8c401201178c5cfa63ec5d444f58fbe984fc0cce033c1f4baf196619ef3b440f4ad
7
+ data.tar.gz: 6de0ba1f0471ab2d42a907c99031bfbde9595c2a81812877d8713bf74487e99ce93dc827629c4772d19e73bde561d6ff033f71a649e8a22cb42fa2e3ed476a03
data/README.md CHANGED
@@ -69,6 +69,14 @@ AllCops:
69
69
  - app/models/concerns/schema_validations.rb
70
70
  ```
71
71
 
72
+ ### Compare online database after deployment with capistrano
73
+
74
+ ```ruby
75
+ # Add to Capfile
76
+
77
+ require 'generated_schema_validations/capistrano_tasks'
78
+
79
+ ```
72
80
 
73
81
  ## Usage
74
82
 
@@ -97,6 +105,15 @@ You can watch changes on `schema_validations.rb` to understand the generated val
97
105
 
98
106
  ## Changelog
99
107
 
108
+ ### 0.5.4
109
+
110
+ * adds support for time fields
111
+ * fix errors on overflowing column values
112
+
113
+ ### 0.5.3
114
+
115
+ * adds support for Rails 7.2
116
+
100
117
  ### 0.5.2
101
118
 
102
119
  * sort generated validates to ignore column order
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'generated_schema_validations'
5
- spec.version = '0.5.2'
5
+ spec.version = '0.5.4'
6
6
  spec.authors = ['Georg Limbach']
7
7
  spec.email = ['georg.limbach@lichtbit.com']
8
8
 
@@ -3,7 +3,19 @@
3
3
  class GeneratedSchemaValidations::DumpChecker < GeneratedSchemaValidations::Dumper
4
4
  def self.read_schema_content
5
5
  stream = StringIO.new
6
- ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
6
+
7
+ if ActiveRecord::VERSION::STRING >= "7.2"
8
+ ActiveRecord::SchemaDumper.dump(
9
+ ActiveRecord::Base.connection_pool,
10
+ stream
11
+ )
12
+ else
13
+ ActiveRecord::SchemaDumper.dump(
14
+ ActiveRecord::Base.connection,
15
+ stream
16
+ )
17
+ end
18
+
7
19
  stream.rewind
8
20
  stream.read
9
21
  end
@@ -104,6 +104,11 @@ class GeneratedSchemaValidations::Table
104
104
  validates name, :date_in_db_range
105
105
  end
106
106
 
107
+ def time(name, column_options = {})
108
+ null_validation(:time, name, column_options)
109
+ validates name, :time_in_db_range
110
+ end
111
+
107
112
  def boolean(name, column_options = {})
108
113
  null_validation(:boolean, name, column_options)
109
114
  end
@@ -106,7 +106,7 @@ module SchemaValidations
106
106
  return unless value.is_a?(DateTime) || value.is_a?(Time)
107
107
  return if value.year.between?(-4711, 294_275) # see https://www.postgresql.org/docs/9.3/datatype-datetime.html
108
108
 
109
- record.errors.add(attr_name, :invalid, options)
109
+ record.errors.add(attr_name, :invalid)
110
110
  end
111
111
  end
112
112
 
@@ -116,7 +116,23 @@ module SchemaValidations
116
116
  return unless value.is_a?(Date)
117
117
  return if value.year.between?(-4711, 5_874_896) # see https://www.postgresql.org/docs/9.3/datatype-datetime.html
118
118
 
119
- record.errors.add(attr_name, :invalid, options)
119
+ record.errors.add(attr_name, :invalid)
120
+ end
121
+ end
122
+
123
+ class TimeInDbRangeValidator < ActiveModel::EachValidator
124
+ def validate_each(record, attr_name, value)
125
+ return if value.nil?
126
+
127
+ unless value.is_a?(Time) || value.is_a?(ActiveSupport::TimeWithZone)
128
+ record.errors.add(attr_name, :invalid)
129
+ return
130
+ end
131
+
132
+ # PostgreSQL allows only times in one day
133
+ return if value.to_date == Date.new(2000, 1, 1)
134
+
135
+ record.errors.add(attr_name, :invalid)
120
136
  end
121
137
  end
122
138
  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.5.2
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Georg Limbach
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-12-17 00:00:00.000000000 Z
11
+ date: 2026-02-14 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.