sequel 4.43.0 → 4.44.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/CHANGELOG +40 -0
- data/doc/active_record.rdoc +2 -2
- data/doc/code_order.rdoc +15 -0
- data/doc/dataset_filtering.rdoc +1 -1
- data/doc/model_dataset_method_design.rdoc +132 -0
- data/doc/opening_databases.rdoc +2 -2
- data/doc/release_notes/4.44.0.txt +125 -0
- data/lib/sequel/adapters/jdbc.rb +5 -1
- data/lib/sequel/adapters/jdbc/as400.rb +1 -1
- data/lib/sequel/adapters/postgres.rb +23 -14
- data/lib/sequel/core.rb +1 -1
- data/lib/sequel/database/schema_generator.rb +27 -0
- data/lib/sequel/dataset/actions.rb +1 -1
- data/lib/sequel/dataset/query.rb +5 -1
- data/lib/sequel/extensions/eval_inspect.rb +4 -4
- data/lib/sequel/extensions/implicit_subquery.rb +48 -0
- data/lib/sequel/extensions/to_dot.rb +1 -1
- data/lib/sequel/model.rb +3 -5
- data/lib/sequel/model/associations.rb +107 -4
- data/lib/sequel/model/base.rb +98 -12
- data/lib/sequel/model/dataset_module.rb +1 -1
- data/lib/sequel/plugins/active_model.rb +11 -3
- data/lib/sequel/plugins/association_dependencies.rb +7 -0
- data/lib/sequel/plugins/auto_validations.rb +10 -0
- data/lib/sequel/plugins/blacklist_security.rb +13 -4
- data/lib/sequel/plugins/class_table_inheritance.rb +11 -0
- data/lib/sequel/plugins/column_conflicts.rb +8 -0
- data/lib/sequel/plugins/composition.rb +12 -2
- data/lib/sequel/plugins/constraint_validations.rb +12 -0
- data/lib/sequel/plugins/csv_serializer.rb +9 -0
- data/lib/sequel/plugins/defaults_setter.rb +6 -0
- data/lib/sequel/plugins/force_encoding.rb +4 -3
- data/lib/sequel/plugins/hook_class_methods.rb +6 -0
- data/lib/sequel/plugins/input_transformer.rb +9 -0
- data/lib/sequel/plugins/insert_returning_select.rb +8 -0
- data/lib/sequel/plugins/instance_hooks.rb +4 -3
- data/lib/sequel/plugins/json_serializer.rb +9 -0
- data/lib/sequel/plugins/lazy_attributes.rb +7 -0
- data/lib/sequel/plugins/many_through_many.rb +13 -2
- data/lib/sequel/plugins/nested_attributes.rb +7 -0
- data/lib/sequel/plugins/pg_array_associations.rb +18 -2
- data/lib/sequel/plugins/pg_row.rb +3 -3
- data/lib/sequel/plugins/pg_typecast_on_load.rb +7 -0
- data/lib/sequel/plugins/prepared_statements.rb +2 -2
- data/lib/sequel/plugins/prepared_statements_safe.rb +7 -0
- data/lib/sequel/plugins/serialization.rb +9 -0
- data/lib/sequel/plugins/single_table_inheritance.rb +13 -1
- data/lib/sequel/plugins/subclasses.rb +15 -1
- data/lib/sequel/plugins/touch.rb +7 -0
- data/lib/sequel/plugins/tree.rb +7 -0
- data/lib/sequel/plugins/typecast_on_load.rb +7 -0
- data/lib/sequel/plugins/update_refresh.rb +24 -13
- data/lib/sequel/plugins/validation_class_methods.rb +13 -0
- data/lib/sequel/sql.rb +28 -0
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/postgres_spec.rb +18 -15
- data/spec/core/dataset_spec.rb +5 -0
- data/spec/core/expression_filters_spec.rb +33 -0
- data/spec/extensions/active_model_spec.rb +15 -1
- data/spec/extensions/association_dependencies_spec.rb +8 -0
- data/spec/extensions/auto_validations_spec.rb +8 -0
- data/spec/extensions/blacklist_security_spec.rb +6 -0
- data/spec/extensions/class_table_inheritance_spec.rb +9 -0
- data/spec/extensions/column_conflicts_spec.rb +6 -0
- data/spec/extensions/composition_spec.rb +8 -0
- data/spec/extensions/constraint_validations_plugin_spec.rb +12 -0
- data/spec/extensions/csv_serializer_spec.rb +7 -0
- data/spec/extensions/defaults_setter_spec.rb +7 -0
- data/spec/extensions/force_encoding_spec.rb +14 -0
- data/spec/extensions/hook_class_methods_spec.rb +10 -0
- data/spec/extensions/implicit_subquery_spec.rb +60 -0
- data/spec/extensions/input_transformer_spec.rb +10 -0
- data/spec/extensions/insert_returning_select_spec.rb +6 -0
- data/spec/extensions/json_serializer_spec.rb +7 -0
- data/spec/extensions/lazy_attributes_spec.rb +6 -0
- data/spec/extensions/many_through_many_spec.rb +44 -0
- data/spec/extensions/nested_attributes_spec.rb +5 -0
- data/spec/extensions/pg_array_associations_spec.rb +46 -0
- data/spec/extensions/pg_typecast_on_load_spec.rb +5 -0
- data/spec/extensions/prepared_statements_safe_spec.rb +5 -0
- data/spec/extensions/serialization_spec.rb +7 -0
- data/spec/extensions/single_table_inheritance_spec.rb +19 -2
- data/spec/extensions/subclasses_spec.rb +13 -0
- data/spec/extensions/to_dot_spec.rb +1 -1
- data/spec/extensions/touch_spec.rb +6 -0
- data/spec/extensions/tree_spec.rb +6 -0
- data/spec/extensions/typecast_on_load_spec.rb +6 -0
- data/spec/extensions/update_refresh_spec.rb +7 -1
- data/spec/extensions/validation_class_methods_spec.rb +13 -0
- data/spec/model/association_reflection_spec.rb +177 -0
- data/spec/model/associations_spec.rb +16 -0
- data/spec/model/dataset_methods_spec.rb +59 -0
- data/spec/model/model_spec.rb +59 -0
- metadata +8 -2
@@ -147,3 +147,62 @@ describe Sequel::Model::DatasetMethods do
|
|
147
147
|
proc{@c.paged_each{|r| }}.must_raise(Sequel::Error)
|
148
148
|
end
|
149
149
|
end
|
150
|
+
|
151
|
+
describe Sequel::Model::DatasetMethods, "#where_all" do
|
152
|
+
before do
|
153
|
+
@c = Class.new(Sequel::Model(DB[:items].freeze))
|
154
|
+
DB.reset
|
155
|
+
end
|
156
|
+
|
157
|
+
it "should filter dataset with condition, and return related rows" do
|
158
|
+
5.times do
|
159
|
+
@c.where_all(:id=>1).must_equal [@c.load(:id=>1, :x=>1)]
|
160
|
+
@c.db.sqls.must_equal ['SELECT * FROM items WHERE (id = 1)']
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
it "should yield each row to the given block" do
|
165
|
+
5.times do
|
166
|
+
a = []
|
167
|
+
@c.where_all(:id=>1){|r| a << r}.must_equal [@c.load(:id=>1, :x=>1)]
|
168
|
+
a.must_equal [@c.load(:id=>1, :x=>1)]
|
169
|
+
@c.db.sqls.must_equal ['SELECT * FROM items WHERE (id = 1)']
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
describe Sequel::Model::DatasetMethods, "#where_each" do
|
175
|
+
before do
|
176
|
+
@c = Class.new(Sequel::Model(DB[:items].freeze))
|
177
|
+
DB.reset
|
178
|
+
end
|
179
|
+
|
180
|
+
it "should yield each row to the given block" do
|
181
|
+
5.times do
|
182
|
+
a = []
|
183
|
+
@c.where_each(:id=>1){|r| a << r}
|
184
|
+
a.must_equal [@c.load(:id=>1, :x=>1)]
|
185
|
+
@c.db.sqls.must_equal ['SELECT * FROM items WHERE (id = 1)']
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
describe Sequel::Model::DatasetMethods, "#where_single_value" do
|
191
|
+
before do
|
192
|
+
@c = Class.new(Sequel::Model(DB[:items].freeze))
|
193
|
+
@c.class_eval do
|
194
|
+
dataset_module do
|
195
|
+
select :only_id, :id
|
196
|
+
end
|
197
|
+
end
|
198
|
+
DB.reset
|
199
|
+
end
|
200
|
+
|
201
|
+
it "should return single value" do
|
202
|
+
5.times do
|
203
|
+
a = []
|
204
|
+
@c.only_id.where_single_value(:id=>1).must_equal 1
|
205
|
+
@c.db.sqls.must_equal ['SELECT id FROM items WHERE (id = 1) LIMIT 1']
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
data/spec/model/model_spec.rb
CHANGED
@@ -180,6 +180,65 @@ describe "Sequel::Model()" do
|
|
180
180
|
end
|
181
181
|
end
|
182
182
|
|
183
|
+
describe "Sequel::Model.freeze" do
|
184
|
+
it "should freeze the model class and not allow any changes" do
|
185
|
+
model = Class.new(Sequel::Model(:items))
|
186
|
+
model.set_allowed_columns [:id]
|
187
|
+
model.finder(:name=>:f_by_name){|pl, ds| ds.where(:name=>pl.arg).limit(1)}
|
188
|
+
model.freeze
|
189
|
+
model.f_by_name(1)
|
190
|
+
|
191
|
+
model.frozen?.must_equal true
|
192
|
+
model.dataset.frozen?.must_equal true
|
193
|
+
model.db_schema.frozen?.must_equal true
|
194
|
+
model.db_schema[:id].frozen?.must_equal true
|
195
|
+
model.columns.frozen?.must_equal true
|
196
|
+
model.setter_methods.frozen?.must_equal true
|
197
|
+
model.send(:overridable_methods_module).frozen?.must_equal true
|
198
|
+
model.default_set_fields_options.frozen?.must_equal true
|
199
|
+
|
200
|
+
proc{model.dataset_module{}}.must_raise RuntimeError, TypeError
|
201
|
+
proc{model.finder(:name=>:first_by_name){|pl, ds| ds.where(:name=>pl.arg).limit(1)}}.must_raise RuntimeError, TypeError
|
202
|
+
end
|
203
|
+
|
204
|
+
it "should freeze a model class without a dataset without breaking" do
|
205
|
+
model = Class.new(Sequel::Model)
|
206
|
+
model.freeze
|
207
|
+
model.frozen?.must_equal true
|
208
|
+
proc{model.dataset}.must_raise Sequel::Error
|
209
|
+
model.db_schema.must_be_nil
|
210
|
+
model.columns.must_be_nil
|
211
|
+
model.setter_methods.must_equal []
|
212
|
+
model.send(:overridable_methods_module).frozen?.must_equal true
|
213
|
+
model.default_set_fields_options.frozen?.must_equal true
|
214
|
+
|
215
|
+
proc{model.dataset_module{}}.must_raise RuntimeError, TypeError
|
216
|
+
proc{model.finder(:name=>:first_by_name){|pl, ds| ds.where(:name=>pl.arg).limit(1)}}.must_raise RuntimeError, TypeError
|
217
|
+
end
|
218
|
+
|
219
|
+
it "should allow subclasses of frozen model classes to work correctly" do
|
220
|
+
model = Class.new(Sequel::Model(:items))
|
221
|
+
model.freeze
|
222
|
+
model = Class.new(model)
|
223
|
+
model.dataset = :items2
|
224
|
+
|
225
|
+
model.dataset_module{}
|
226
|
+
model.plugin Module.new
|
227
|
+
model.finder(:name=>:first_by_name){|pl, ds| ds.where(:name=>pl.arg).limit(1)}
|
228
|
+
model.first_by_name('a').values.must_equal(:id=>1, :x=>1)
|
229
|
+
model.dataset.frozen?.must_equal false
|
230
|
+
|
231
|
+
model.frozen?.must_equal false
|
232
|
+
model.dataset.frozen?.must_equal false
|
233
|
+
model.db_schema.frozen?.must_equal false
|
234
|
+
model.db_schema[:id].frozen?.must_equal false
|
235
|
+
model.setter_methods.frozen?.must_equal false
|
236
|
+
model.dataset_module{}.frozen?.must_equal false
|
237
|
+
model.send(:overridable_methods_module).frozen?.must_equal false
|
238
|
+
model.default_set_fields_options.frozen?.must_equal false
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
183
242
|
describe Sequel::Model do
|
184
243
|
it "should have class method aliased as model" do
|
185
244
|
Sequel::Model.instance_methods.collect{|x| x.to_s}.must_include("model")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.44.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -133,6 +133,7 @@ extra_rdoc_files:
|
|
133
133
|
- doc/model_plugins.rdoc
|
134
134
|
- doc/extensions.rdoc
|
135
135
|
- doc/mssql_stored_procedures.rdoc
|
136
|
+
- doc/model_dataset_method_design.rdoc
|
136
137
|
- doc/release_notes/1.0.txt
|
137
138
|
- doc/release_notes/1.1.txt
|
138
139
|
- doc/release_notes/1.3.txt
|
@@ -244,6 +245,7 @@ extra_rdoc_files:
|
|
244
245
|
- doc/release_notes/4.41.0.txt
|
245
246
|
- doc/release_notes/4.42.0.txt
|
246
247
|
- doc/release_notes/4.43.0.txt
|
248
|
+
- doc/release_notes/4.44.0.txt
|
247
249
|
files:
|
248
250
|
- CHANGELOG
|
249
251
|
- MIT-LICENSE
|
@@ -262,6 +264,7 @@ files:
|
|
262
264
|
- doc/extensions.rdoc
|
263
265
|
- doc/mass_assignment.rdoc
|
264
266
|
- doc/migration.rdoc
|
267
|
+
- doc/model_dataset_method_design.rdoc
|
265
268
|
- doc/model_hooks.rdoc
|
266
269
|
- doc/model_plugins.rdoc
|
267
270
|
- doc/mssql_stored_procedures.rdoc
|
@@ -377,6 +380,7 @@ files:
|
|
377
380
|
- doc/release_notes/4.41.0.txt
|
378
381
|
- doc/release_notes/4.42.0.txt
|
379
382
|
- doc/release_notes/4.43.0.txt
|
383
|
+
- doc/release_notes/4.44.0.txt
|
380
384
|
- doc/release_notes/4.5.0.txt
|
381
385
|
- doc/release_notes/4.6.0.txt
|
382
386
|
- doc/release_notes/4.7.0.txt
|
@@ -514,6 +518,7 @@ files:
|
|
514
518
|
- lib/sequel/extensions/graph_each.rb
|
515
519
|
- lib/sequel/extensions/hash_aliases.rb
|
516
520
|
- lib/sequel/extensions/identifier_mangling.rb
|
521
|
+
- lib/sequel/extensions/implicit_subquery.rb
|
517
522
|
- lib/sequel/extensions/inflector.rb
|
518
523
|
- lib/sequel/extensions/looser_typecasting.rb
|
519
524
|
- lib/sequel/extensions/meta_def.rb
|
@@ -729,6 +734,7 @@ files:
|
|
729
734
|
- spec/extensions/hook_class_methods_spec.rb
|
730
735
|
- spec/extensions/identifier_columns_spec.rb
|
731
736
|
- spec/extensions/identifier_mangling_spec.rb
|
737
|
+
- spec/extensions/implicit_subquery_spec.rb
|
732
738
|
- spec/extensions/inflector_spec.rb
|
733
739
|
- spec/extensions/input_transformer_spec.rb
|
734
740
|
- spec/extensions/insert_returning_select_spec.rb
|