datagrid 2.0.7 → 2.0.8

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: 9d7cb9f6ca20bf850b830352d5acedd8b71c33cd344b27a2ad87ae6a9f78d58f
4
- data.tar.gz: a6261913da93d1c8e1a875ff1b98efb907e015af43f03603ba4c40d48bca8c30
3
+ metadata.gz: f5ac6077bea5b3ee95001a94f7c862a2430dec10d5d35602ac763ad748b2bd6f
4
+ data.tar.gz: 86a7e62eebc8044e215708ce2aa29f63955e5c7c0635a4e48e1e41f35bffc291
5
5
  SHA512:
6
- metadata.gz: 4e20609d434f571ba4fcec92f821fd2bf6a9e4995629fd0a3702562d3b2dbd06f647dbac9104cdf45d37a11b622e7d64012f160348493e0f70ab5972900e9a9b
7
- data.tar.gz: e16a562a395b43cd36da74635ec61bc4b4c800f7b68d64e2e4dfd4713ac6c3bd9fe1b64d9ccb44ba03ae44dbb264c919a03c6e94f7e05f5fa9ae61ac4baa1bee
6
+ metadata.gz: 3f695cc908307c31ae745621b6afe99ef86422b685549d3084e9b5610c7420eea8c0de9318a25849f0e0042bdc0c95d11b6163ebf0d01ea1b4d62d6de8bd2b81
7
+ data.tar.gz: 3fe0c0cde94487679ec67ba563b8668f26fa4f977700a25ae58c35a1908bdc73d1558b83a4593eaaf51810844baa26e99e834f7a280edae01ad55f6bc83c3051
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.0.8]
4
+
5
+ * Rescue StatementInvalid when guessing column type from a query
6
+ * Prevent typecasting of date into timestamp when `:date` filter has a block
7
+
8
+ ``` ruby
9
+ class MyGrid < Datagrid::Base
10
+ scope { User }
11
+
12
+ filter(:created_at, :date) do |scope, value|
13
+ value.is_a?(Date) # => true
14
+ scope.joins(:registration).where(registrations: { registration_date: value })
15
+ end
16
+ end
17
+ ```
18
+
3
19
  ## [2.0.7]
4
20
 
5
21
  * Raise `Datagrid::ConfigurationError` when column or filter name
@@ -86,22 +86,32 @@ module Datagrid
86
86
  scope.where("#{field} #{contains_predicate} ?", "%#{value}%")
87
87
  end
88
88
 
89
+ def builtin_type(scope, field)
90
+ if scope_has_column?(scope, field)
91
+ scope.columns_hash[field.to_s].type
92
+ else
93
+ begin
94
+ scope.connection.select_all(
95
+ scope.unscope(:select, :order).select(field => "custom_field").limit(0).arel
96
+ ).column_types['custom_field']&.type
97
+ rescue ActiveRecord::StatementInvalid
98
+ nil
99
+ end
100
+ end
101
+ end
102
+
89
103
  def normalized_column_type(scope, field)
90
- builtin_type = scope_has_column?(scope, field) ?
91
- scope.columns_hash[field.to_s].type :
92
- scope.connection.select_all(
93
- scope.unscope(:select, :order).select(field => "custom_field").limit(0).arel
94
- ).column_types['custom_field']&.type
95
-
96
- {
97
- %i[string text time binary] => :string,
98
- %i[integer primary_key] => :integer,
99
- %i[float decimal] => :float,
100
- [:date] => :date,
101
- %i[datetime timestamp timestamptz] => :timestamp,
102
- [:boolean] => :boolean,
103
- }.each do |keys, value|
104
- return value if keys.include?(builtin_type)
104
+ if builtin_type = builtin_type(scope, field)
105
+ {
106
+ %i[string text time binary] => :string,
107
+ %i[integer primary_key] => :integer,
108
+ %i[float decimal] => :float,
109
+ [:date] => :date,
110
+ %i[datetime timestamp timestamptz] => :timestamp,
111
+ [:boolean] => :boolean,
112
+ }.each do |keys, value|
113
+ return value if keys.include?(builtin_type)
114
+ end
105
115
  end
106
116
  nil
107
117
  end
@@ -23,7 +23,7 @@ module Datagrid
23
23
  end
24
24
 
25
25
  def parse(value)
26
- raise NotImplementedError, "#parse(value) suppose to be overwritten"
26
+ raise NotImplementedError, "#{self.class}#parse(value) suppose to be overwritten"
27
27
  end
28
28
 
29
29
  def default_input_options
@@ -12,7 +12,7 @@ module Datagrid
12
12
  end
13
13
 
14
14
  def apply(grid_object, scope, value)
15
- if !dummy? && grid_object.driver.timestamp_column?(scope, name)
15
+ if !dummy? && !block && grid_object.driver.timestamp_column?(scope, name)
16
16
  value = Datagrid::Utils.format_date_as_timestamp(value)
17
17
  end
18
18
  super
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Datagrid
4
- VERSION = "2.0.7"
4
+ VERSION = "2.0.8"
5
5
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datagrid
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.7
4
+ version: 2.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bogdan Gusiev
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-11-18 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: railties
@@ -98,7 +97,6 @@ metadata:
98
97
  changelog_uri: https://github.com/bogdan/datagrid/blob/main/CHANGELOG.md
99
98
  source_code_uri: https://github.com/bogdan/datagrid
100
99
  rubygems_mfa_required: 'true'
101
- post_install_message:
102
100
  rdoc_options: []
103
101
  require_paths:
104
102
  - lib
@@ -113,8 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
111
  - !ruby/object:Gem::Version
114
112
  version: '0'
115
113
  requirements: []
116
- rubygems_version: 3.4.10
117
- signing_key:
114
+ rubygems_version: 3.6.7
118
115
  specification_version: 4
119
116
  summary: Library that provides DSL to present table like data
120
117
  test_files: []