File tree 2 files changed +48
-3
lines changed
2 files changed +48
-3
lines changed Original file line number Diff line number Diff line change @@ -5,9 +5,11 @@ class Repository
5
5
# @api private
6
6
class RelationReader < ::Module
7
7
module InstanceMethods
8
+ extend ::Dry ::Core ::Deprecations [ :'rom-repository' ]
9
+
8
10
private
9
11
10
- # @api private
12
+ # @api public
11
13
def prepare_relation ( name , **)
12
14
container
13
15
. relations [ name ]
@@ -17,15 +19,21 @@ def prepare_relation(name, **)
17
19
)
18
20
end
19
21
22
+ # @api private
23
+ def set_relation ( name ) # rubocop:disable Naming/AccessorMethodName
24
+ prepare_relation ( name )
25
+ end
26
+ deprecate :set_relation , :prepare_relation
27
+
20
28
# @api private
21
29
def relation_reader ( cache , ...)
22
30
cache_key = relation_cache_key ( ...)
23
31
cache . fetch_or_store ( *cache_key ) { prepare_relation ( ...) }
24
32
end
25
33
26
34
# @api private
27
- def relation_cache_key ( name , **)
28
- [ name , auto_struct , struct_namespace ]
35
+ def relation_cache_key ( name , **kwargs )
36
+ [ name , auto_struct , struct_namespace , kwargs ]
29
37
end
30
38
end
31
39
Original file line number Diff line number Diff line change @@ -423,4 +423,41 @@ class Post < OpenStruct; end
423
423
424
424
expect ( post ) . to be ( post_from_user )
425
425
end
426
+
427
+ context 'using #prepare_relation' do
428
+ let ( :repo_class ) do
429
+ Class . new ( ROM ::Repository [ :users ] ) do
430
+ def prepare_relation ( name , custom : 'default' )
431
+ super . select_append { `'#{ custom } '` . as ( :extra_column ) }
432
+ end
433
+ end
434
+ end
435
+
436
+ it 'is uses modified relation' do
437
+ expect ( repo . users . to_a . map ( &:extra_column ) ) . to eql ( %w[ default default ] )
438
+ expect ( repo . users ( custom : 'custom' ) . to_a . map ( &:extra_column ) ) . to eql ( %w[ custom custom ] )
439
+ end
440
+ end
441
+
442
+ context 'using #set_relation' do
443
+ let ( :log_file ) do
444
+ Tempfile . new ( 'dry_deprecations' )
445
+ end
446
+
447
+ before do
448
+ Dry ::Core ::Deprecations . set_logger! ( log_file )
449
+ end
450
+
451
+ let ( :repo_class ) do
452
+ Class . new ( ROM ::Repository [ :users ] ) do
453
+ def custom_users
454
+ set_relation ( :users ) . select_append { `'modified'` . as ( :modified ) }
455
+ end
456
+ end
457
+ end
458
+
459
+ it "constructs a relation but it's deprecated" do
460
+ expect ( repo . custom_users . to_a . map ( &:modified ) ) . to eql ( %w[ modified modified ] )
461
+ end
462
+ end
426
463
end
You can’t perform that action at this time.
0 commit comments