activerecord-multirange 1.2.1 → 1.3.1
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01b0a99ebb0d7a15d32f5d996e88d630dc789864c5cbd9012c2ec6c49a1519ba
|
4
|
+
data.tar.gz: d28cfa56518683a3b56908292dd30dbf370a9c7d6abe7ad5a517d93d3892a1dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 908e20aa94b0da2fc6e4d47135827efceb83aff7d51487e6361a179c924e471289773e501ef025decd232051887d7b0ca0d04b17551246de7f28cc3a983d2572
|
7
|
+
data.tar.gz: 8288c8305b5c0f6d7011450cecdd1236f040a33333f2d5a1e598195dfc311c64c5a76f801d3e2128cfc1b6f3087c40ee3a504c5082b06d4ac88d0feb1d72a7ee
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
activerecord-multirange (1.
|
4
|
+
activerecord-multirange (1.3.1)
|
5
5
|
pg (>= 1)
|
6
6
|
rails (>= 6)
|
7
7
|
|
@@ -105,6 +105,7 @@ GEM
|
|
105
105
|
marcel (1.0.2)
|
106
106
|
method_source (1.0.0)
|
107
107
|
mini_mime (1.1.5)
|
108
|
+
mini_portile2 (2.8.9)
|
108
109
|
minitest (5.19.0)
|
109
110
|
net-imap (0.3.7)
|
110
111
|
date
|
@@ -116,11 +117,8 @@ GEM
|
|
116
117
|
net-smtp (0.3.3)
|
117
118
|
net-protocol
|
118
119
|
nio4r (2.5.9)
|
119
|
-
nokogiri (1.15.4
|
120
|
-
|
121
|
-
nokogiri (1.15.4-x86_64-darwin)
|
122
|
-
racc (~> 1.4)
|
123
|
-
nokogiri (1.15.4-x86_64-linux)
|
120
|
+
nokogiri (1.15.4)
|
121
|
+
mini_portile2 (~> 2.8.2)
|
124
122
|
racc (~> 1.4)
|
125
123
|
parallel (1.23.0)
|
126
124
|
parser (3.2.2.1)
|
@@ -203,6 +201,7 @@ GEM
|
|
203
201
|
|
204
202
|
PLATFORMS
|
205
203
|
arm64-darwin-23
|
204
|
+
arm64-darwin-24
|
206
205
|
x86_64-darwin-22
|
207
206
|
x86_64-linux
|
208
207
|
|
@@ -23,17 +23,15 @@ module Activerecord
|
|
23
23
|
SELECT m.oid, m.typname, m.typelem, m.typdelim, m.typinput::varchar,
|
24
24
|
pr.rngsubtype, m.typtype, m.typbasetype
|
25
25
|
FROM pg_type m
|
26
|
-
JOIN
|
27
|
-
JOIN pg_range pr ON r.oid = pr.rngtypid
|
26
|
+
JOIN pg_range pr ON m.oid = pr.rngmultitypid
|
28
27
|
WHERE m.typtype = 'm';
|
29
28
|
QUERY
|
30
29
|
|
31
30
|
# Use exec_query for all Rails versions since execute_and_clear is private
|
32
31
|
result = exec_query(query, 'SCHEMA', [])
|
32
|
+
|
33
33
|
# Convert rows to hash format with column names as keys
|
34
|
-
records = result.rows.map
|
35
|
-
result.columns.zip(row).to_h
|
36
|
-
end
|
34
|
+
records = result.rows.map { |row| result.columns.zip(row).to_h }
|
37
35
|
initializer.register_multirange_type(records)
|
38
36
|
end
|
39
37
|
end
|
@@ -35,7 +35,9 @@ module Activerecord
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def cast_value(value)
|
38
|
-
return nil if value.
|
38
|
+
return nil if value.nil?
|
39
|
+
return [] if value.is_a?(::Array) && value.empty?
|
40
|
+
return value if value.is_a?(::Array)
|
39
41
|
return value unless value.is_a?(::String)
|
40
42
|
|
41
43
|
ranges = scan_ranges(value)
|
@@ -16,12 +16,24 @@ module Activerecord
|
|
16
16
|
|
17
17
|
# Multirange types that need to be registered
|
18
18
|
MULTIRANGE_TYPES = {
|
19
|
-
tsmultirange: {
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
19
|
+
tsmultirange: {
|
20
|
+
name: 'tsmultirange'
|
21
|
+
},
|
22
|
+
datemultirange: {
|
23
|
+
name: 'datemultirange'
|
24
|
+
},
|
25
|
+
tstzmultirange: {
|
26
|
+
name: 'tstzmultirange'
|
27
|
+
},
|
28
|
+
nummultirange: {
|
29
|
+
name: 'nummultirange'
|
30
|
+
},
|
31
|
+
int8multirange: {
|
32
|
+
name: 'int8multirange'
|
33
|
+
},
|
34
|
+
int4multirange: {
|
35
|
+
name: 'int4multirange'
|
36
|
+
}
|
25
37
|
}.freeze
|
26
38
|
|
27
39
|
def self.add_multirange_column_type
|
@@ -29,6 +41,13 @@ module Activerecord
|
|
29
41
|
# Register multirange types in NATIVE_DATABASE_TYPES for Rails 8 compatibility
|
30
42
|
Activerecord::Multirange.register_native_database_types
|
31
43
|
|
44
|
+
# Register multirange modifier for ActiveRecord attribute API
|
45
|
+
ActiveRecord::Type.add_modifier(
|
46
|
+
{ multirange: true },
|
47
|
+
Activerecord::Multirange::OID::MultiRange,
|
48
|
+
adapter: :postgresql
|
49
|
+
)
|
50
|
+
|
32
51
|
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(Adapter)
|
33
52
|
ActiveRecord::ConnectionAdapters::PostgreSQL::OID::TypeMapInitializer
|
34
53
|
.prepend(TypeMap)
|
@@ -45,19 +64,21 @@ module Activerecord
|
|
45
64
|
|
46
65
|
def self.register_native_database_types
|
47
66
|
# Ensure the PostgreSQL adapter is loaded
|
48
|
-
|
67
|
+
unless defined?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
|
68
|
+
return
|
69
|
+
end
|
49
70
|
|
50
71
|
adapter_class = ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
|
51
72
|
|
52
73
|
# Check if NATIVE_DATABASE_TYPES is already defined and modifiable
|
53
74
|
if adapter_class.const_defined?(:NATIVE_DATABASE_TYPES)
|
54
75
|
current_types = adapter_class::NATIVE_DATABASE_TYPES
|
55
|
-
|
76
|
+
|
56
77
|
# Only modify if our types aren't already registered
|
57
78
|
unless current_types.key?(:tsmultirange)
|
58
79
|
# Create a new hash with existing types plus our multirange types
|
59
80
|
new_types = current_types.merge(MULTIRANGE_TYPES)
|
60
|
-
|
81
|
+
|
61
82
|
# Replace the constant with the updated hash
|
62
83
|
adapter_class.send(:remove_const, :NATIVE_DATABASE_TYPES)
|
63
84
|
adapter_class.const_set(:NATIVE_DATABASE_TYPES, new_types.freeze)
|
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-multirange
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gustavo Warmling Teixeira
|
8
|
+
autorequire:
|
8
9
|
bindir: exe
|
9
10
|
cert_chain: []
|
10
|
-
date: 2025-08-
|
11
|
+
date: 2025-08-29 00:00:00.000000000 Z
|
11
12
|
dependencies:
|
12
13
|
- !ruby/object:Gem::Dependency
|
13
14
|
name: pg
|
@@ -141,6 +142,7 @@ licenses:
|
|
141
142
|
metadata:
|
142
143
|
homepage_uri: https://github.com/gustavowt/activerecord-multirange
|
143
144
|
source_code_uri: https://github.com/gustavowt/activerecord-multirange
|
145
|
+
post_install_message:
|
144
146
|
rdoc_options: []
|
145
147
|
require_paths:
|
146
148
|
- lib
|
@@ -155,7 +157,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
157
|
- !ruby/object:Gem::Version
|
156
158
|
version: '0'
|
157
159
|
requirements: []
|
158
|
-
rubygems_version: 3.
|
160
|
+
rubygems_version: 3.5.22
|
161
|
+
signing_key:
|
159
162
|
specification_version: 4
|
160
163
|
summary: PostgreSQL multiranges support
|
161
164
|
test_files: []
|