sequel-tstzrange-fields 0.2.1 → 0.3.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 +4 -4
- data/lib/sequel/plugins/tstzrange_fields.rb +29 -9
- data/lib/sequel_tstzrange_fields/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ec8083564a067989885ce28a4df1ea40f771bc9e9dc0629391d2029c92e0192a
|
|
4
|
+
data.tar.gz: '048514b958e7a5f84cab268c3f3e3da5a380378001a780f763f11ca680a66aa3'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ccff8dea73d55454198dd75875c82c7a05c201404bd757d2d2d5b1559619635806a2ca31bbb1f442223f3ed1ce59f2c8f4e7265625e934ee8ae0d9468de38b39
|
|
7
|
+
data.tar.gz: 7a44746f3b61f8338f3e3dd3335efeef8bf6ac00a19bb742359ffb87a63b5f57b16c152f3f1d90630396982610d8bcc1808e33a4d56122d681502ccf837cdb67
|
|
@@ -35,6 +35,10 @@ module Sequel
|
|
|
35
35
|
module TstzrangeFields
|
|
36
36
|
VERSION = SequelTstzrangeFields::VERSION
|
|
37
37
|
|
|
38
|
+
def self.apply(_model, _opts={})
|
|
39
|
+
Sequel.extension :pg_range_ops
|
|
40
|
+
end
|
|
41
|
+
|
|
38
42
|
def self.configure(model, *args)
|
|
39
43
|
unless model.db.schema_type_class(:tstzrange)
|
|
40
44
|
msg = "tstzrange_fields plugin requires pg_range db extension to be installed. " \
|
|
@@ -45,8 +49,8 @@ module Sequel
|
|
|
45
49
|
args = args.flatten
|
|
46
50
|
|
|
47
51
|
setup_model(model)
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
model.tstzrange_columns = args.flatten
|
|
53
|
+
model.tstzrange_columns.each do |column|
|
|
50
54
|
create_accessors(model, column)
|
|
51
55
|
end
|
|
52
56
|
end
|
|
@@ -70,11 +74,11 @@ module Sequel
|
|
|
70
74
|
|
|
71
75
|
def self.create_accessors(model, column)
|
|
72
76
|
get_column_method = column.to_sym
|
|
73
|
-
set_column_method = "#{column}="
|
|
74
|
-
get_begin_method = "#{column}_begin"
|
|
75
|
-
set_begin_method = "#{column}_begin="
|
|
76
|
-
get_end_method = "#{column}_end"
|
|
77
|
-
set_end_method = "#{column}_end="
|
|
77
|
+
set_column_method = :"#{column}="
|
|
78
|
+
get_begin_method = :"#{column}_begin"
|
|
79
|
+
set_begin_method = :"#{column}_begin="
|
|
80
|
+
get_end_method = :"#{column}_end"
|
|
81
|
+
set_end_method = :"#{column}_end="
|
|
78
82
|
|
|
79
83
|
model.define_method(get_column_method) do
|
|
80
84
|
self[column]
|
|
@@ -87,7 +91,7 @@ module Sequel
|
|
|
87
91
|
when Float::INFINITY
|
|
88
92
|
range = Sequel::Postgres::PGRange.new(nil, nil, empty: false, db_type: :tstzrange)
|
|
89
93
|
self[column] = range
|
|
90
|
-
when "empty"
|
|
94
|
+
when "empty", nil
|
|
91
95
|
self[column] = Sequel::Postgres::PGRange.empty(:tstzrange)
|
|
92
96
|
else
|
|
93
97
|
beg = value.respond_to?(:begin) ? value.begin : (value[:begin] || value["begin"])
|
|
@@ -97,7 +101,8 @@ module Sequel
|
|
|
97
101
|
end
|
|
98
102
|
|
|
99
103
|
model.define_method(get_begin_method) do
|
|
100
|
-
send(get_column_method)
|
|
104
|
+
r = send(get_column_method)
|
|
105
|
+
return r&.begin
|
|
101
106
|
end
|
|
102
107
|
|
|
103
108
|
model.define_method(set_begin_method) do |new_time|
|
|
@@ -115,6 +120,21 @@ module Sequel
|
|
|
115
120
|
send(set_column_method, new_range)
|
|
116
121
|
end
|
|
117
122
|
end
|
|
123
|
+
|
|
124
|
+
module ClassMethods
|
|
125
|
+
# The Array of fields which are tstzrange columns.
|
|
126
|
+
attr_accessor :tstzrange_columns
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
module DatasetMethods
|
|
130
|
+
# Limit the dataset to the rows where the tstzrange column contains the given value.
|
|
131
|
+
# val is cast into a timestamptz.
|
|
132
|
+
# column is the default/first tstzrange column if not given.
|
|
133
|
+
def tztsrange_contains(val, column: nil)
|
|
134
|
+
column ||= self.model.tstzrange_columns.first
|
|
135
|
+
self.where(Sequel.pg_range(column).contains(Sequel.cast(val, :timestamptz)))
|
|
136
|
+
end
|
|
137
|
+
end
|
|
118
138
|
end
|
|
119
139
|
end
|
|
120
140
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sequel-tstzrange-fields
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Lithic Tech
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-05-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: pg
|
|
@@ -118,7 +118,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
118
118
|
requirements:
|
|
119
119
|
- - ">="
|
|
120
120
|
- !ruby/object:Gem::Version
|
|
121
|
-
version:
|
|
121
|
+
version: 3.1.0
|
|
122
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
123
|
requirements:
|
|
124
124
|
- - ">="
|