Module: Sequel::Plugins::TstzrangeFields
- Defined in:
- lib/sequel/plugins/tstzrange_fields.rb
Defined Under Namespace
Modules: ClassMethods, DatasetMethods
Constant Summary
collapse
- VERSION =
SequelTstzrangeFields::VERSION
Class Method Summary
collapse
Class Method Details
.apply(_model, _opts = {}) ⇒ Object
39
40
41
|
# File 'lib/sequel/plugins/tstzrange_fields.rb', line 39
def self.apply(_model, _opts={})
Sequel.extension :pg_range_ops
end
|
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/sequel/plugins/tstzrange_fields.rb', line 43
def self.configure(model, *args)
SequelTstzrangeFields::Helpers.check_schema_type_available(model.db, :tstzrange, :pg_range)
args << :period if args.empty?
args = args.flatten
setup_model(model)
model.tstzrange_columns = args
model.tstzrange_columns.each do |column|
create_accessors(model, column)
end
end
|
.create_accessors(model, column) ⇒ Object
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/sequel/plugins/tstzrange_fields.rb', line 59
def self.create_accessors(model, column)
get_column_method = column.to_sym
set_column_method = :"#{column}="
get_begin_method = :"#{column}_begin"
set_begin_method = :"#{column}_begin="
get_end_method = :"#{column}_end"
set_end_method = :"#{column}_end="
model.define_method(get_column_method) do
self[column]
end
model.define_method(set_column_method) do |value|
self[column] = self.class.value_to_tstzrange(value)
end
model.define_method(get_begin_method) do
r = send(get_column_method)
return r&.begin
end
model.define_method(set_begin_method) do |new_time|
new_range = self.class.new_tstzrange(new_time, send(get_end_method))
send(set_column_method, new_range)
end
model.define_method(get_end_method) do
r = send(get_column_method)
return r&.end
end
model.define_method(set_end_method) do |new_time|
new_range = self.class.new_tstzrange(send(get_begin_method), new_time)
send(set_column_method, new_range)
end
end
|
.setup_model(model) ⇒ Object