@@ -8,56 +8,56 @@ def kredis_proxy(name, key: nil, config: :shared, after_change: nil)
88 kredis_connection_with __method__ , name , key , config : config , after_change : after_change
99 end
1010
11- def kredis_string ( name , key : nil , config : :shared , after_change : nil , expires_in : nil )
12- kredis_connection_with __method__ , name , key , config : config , after_change : after_change , expires_in : expires_in
11+ def kredis_string ( name , key : nil , default : nil , config : :shared , after_change : nil , expires_in : nil )
12+ kredis_connection_with __method__ , name , key , default : default , config : config , after_change : after_change , expires_in : expires_in
1313 end
1414
15- def kredis_integer ( name , key : nil , config : :shared , after_change : nil , expires_in : nil )
16- kredis_connection_with __method__ , name , key , config : config , after_change : after_change , expires_in : expires_in
15+ def kredis_integer ( name , key : nil , default : nil , config : :shared , after_change : nil , expires_in : nil )
16+ kredis_connection_with __method__ , name , key , default : default , config : config , after_change : after_change , expires_in : expires_in
1717 end
1818
19- def kredis_decimal ( name , key : nil , config : :shared , after_change : nil , expires_in : nil )
20- kredis_connection_with __method__ , name , key , config : config , after_change : after_change , expires_in : expires_in
19+ def kredis_decimal ( name , key : nil , default : nil , config : :shared , after_change : nil , expires_in : nil )
20+ kredis_connection_with __method__ , name , key , default : default , config : config , after_change : after_change , expires_in : expires_in
2121 end
2222
23- def kredis_datetime ( name , key : nil , config : :shared , after_change : nil , expires_in : nil )
24- kredis_connection_with __method__ , name , key , config : config , after_change : after_change , expires_in : expires_in
23+ def kredis_datetime ( name , key : nil , default : nil , config : :shared , after_change : nil , expires_in : nil )
24+ kredis_connection_with __method__ , name , key , default : default , config : config , after_change : after_change , expires_in : expires_in
2525 end
2626
27- def kredis_flag ( name , key : nil , config : :shared , after_change : nil , expires_in : nil )
28- kredis_connection_with __method__ , name , key , config : config , after_change : after_change , expires_in : expires_in
27+ def kredis_flag ( name , key : nil , default : nil , config : :shared , after_change : nil , expires_in : nil )
28+ kredis_connection_with __method__ , name , key , default : default , config : config , after_change : after_change , expires_in : expires_in
2929
3030 define_method ( "#{ name } ?" ) do
3131 send ( name ) . marked?
3232 end
3333 end
3434
35- def kredis_float ( name , key : nil , config : :shared , after_change : nil , expires_in : nil )
36- kredis_connection_with __method__ , name , key , config : config , after_change : after_change , expires_in : expires_in
35+ def kredis_float ( name , key : nil , default : nil , config : :shared , after_change : nil , expires_in : nil )
36+ kredis_connection_with __method__ , name , key , default : default , config : config , after_change : after_change , expires_in : expires_in
3737 end
3838
3939 def kredis_enum ( name , key : nil , values :, default :, config : :shared , after_change : nil )
4040 kredis_connection_with __method__ , name , key , values : values , default : default , config : config , after_change : after_change
4141 end
4242
43- def kredis_json ( name , key : nil , config : :shared , after_change : nil , expires_in : nil )
44- kredis_connection_with __method__ , name , key , config : config , after_change : after_change , expires_in : expires_in
43+ def kredis_json ( name , key : nil , default : nil , config : :shared , after_change : nil , expires_in : nil )
44+ kredis_connection_with __method__ , name , key , default : default , config : config , after_change : after_change , expires_in : expires_in
4545 end
4646
47- def kredis_list ( name , key : nil , typed : :string , config : :shared , after_change : nil )
48- kredis_connection_with __method__ , name , key , typed : typed , config : config , after_change : after_change
47+ def kredis_list ( name , key : nil , default : nil , typed : :string , config : :shared , after_change : nil )
48+ kredis_connection_with __method__ , name , key , default : default , typed : typed , config : config , after_change : after_change
4949 end
5050
51- def kredis_unique_list ( name , limit : nil , key : nil , typed : :string , config : :shared , after_change : nil )
52- kredis_connection_with __method__ , name , key , limit : limit , typed : typed , config : config , after_change : after_change
51+ def kredis_unique_list ( name , limit : nil , key : nil , default : nil , typed : :string , config : :shared , after_change : nil )
52+ kredis_connection_with __method__ , name , key , default : default , limit : limit , typed : typed , config : config , after_change : after_change
5353 end
5454
55- def kredis_ordered_set ( name , limit : nil , key : nil , typed : :string , config : :shared , after_change : nil )
56- kredis_connection_with __method__ , name , key , limit : limit , typed : typed , config : config , after_change : after_change
55+ def kredis_set ( name , key : nil , default : nil , typed : :string , config : :shared , after_change : nil )
56+ kredis_connection_with __method__ , name , key , default : default , typed : typed , config : config , after_change : after_change
5757 end
5858
59- def kredis_set ( name , key : nil , typed : :string , config : :shared , after_change : nil )
60- kredis_connection_with __method__ , name , key , typed : typed , config : config , after_change : after_change
59+ def kredis_ordered_set ( name , limit : nil , default : nil , key : nil , typed : :string , config : :shared , after_change : nil )
60+ kredis_connection_with __method__ , name , key , default : default , limit : limit , typed : typed , config : config , after_change : after_change
6161 end
6262
6363 def kredis_slot ( name , key : nil , config : :shared , after_change : nil )
@@ -68,16 +68,16 @@ def kredis_slots(name, available:, key: nil, config: :shared, after_change: nil)
6868 kredis_connection_with __method__ , name , key , available : available , config : config , after_change : after_change
6969 end
7070
71- def kredis_counter ( name , key : nil , config : :shared , after_change : nil , expires_in : nil )
72- kredis_connection_with __method__ , name , key , config : config , after_change : after_change , expires_in : expires_in
71+ def kredis_counter ( name , key : nil , default : nil , config : :shared , after_change : nil , expires_in : nil )
72+ kredis_connection_with __method__ , name , key , default : default , config : config , after_change : after_change , expires_in : expires_in
7373 end
7474
75- def kredis_hash ( name , key : nil , typed : :string , config : :shared , after_change : nil )
76- kredis_connection_with __method__ , name , key , typed : typed , config : config , after_change : after_change
75+ def kredis_hash ( name , key : nil , default : nil , typed : :string , config : :shared , after_change : nil )
76+ kredis_connection_with __method__ , name , key , default : default , typed : typed , config : config , after_change : after_change
7777 end
7878
79- def kredis_boolean ( name , key : nil , config : :shared , after_change : nil , expires_in : nil )
80- kredis_connection_with __method__ , name , key , config : config , after_change : after_change , expires_in : expires_in
79+ def kredis_boolean ( name , key : nil , default : nil , config : :shared , after_change : nil , expires_in : nil )
80+ kredis_connection_with __method__ , name , key , default : default , config : config , after_change : after_change , expires_in : expires_in
8181 end
8282
8383 private
@@ -90,6 +90,7 @@ def kredis_connection_with(method, name, key, **options)
9090 if instance_variable_defined? ( ivar_symbol )
9191 instance_variable_get ( ivar_symbol )
9292 else
93+ options [ :default ] = kredis_default_evaluated ( options [ :default ] ) if options [ :default ]
9394 new_type = Kredis . send ( type , kredis_key_evaluated ( key ) || kredis_key_for_attribute ( name ) , **options )
9495 instance_variable_set ivar_symbol ,
9596 after_change ? enrich_after_change_with_record_access ( new_type , after_change ) : new_type
@@ -121,4 +122,12 @@ def enrich_after_change_with_record_access(type, original_after_change)
121122 when Symbol then Kredis ::Types ::CallbacksProxy . new ( type , -> ( _ ) { send ( original_after_change ) } )
122123 end
123124 end
125+
126+ def kredis_default_evaluated ( default )
127+ case default
128+ when Proc then Proc . new { default . call ( self ) }
129+ when Symbol then send ( default )
130+ else default
131+ end
132+ end
124133end
0 commit comments