@@ -134,10 +134,14 @@ pub fn dynamic_cache(arguments: TokenStream, input: TokenStream) -> TokenStream
134
134
} )
135
135
. collect :: < Vec < Ident > > ( ) ;
136
136
137
+ let invalidate = format_ident ! ( "invalidate_{}" , & sig. ident) ;
137
138
let wrapper = format_ident ! ( "__{}" , & sig. ident) ;
138
139
let skytable_tls = format_ident ! ( "__{}_skytable_tls" , & sig. ident) ;
140
+ let skytable_tls_static = format_ident ! ( "{}" , skytable_tls. to_string( ) . to_uppercase( ) ) ;
139
141
let skytable = format_ident ! ( "__{}_skytable" , & sig. ident) ;
142
+ let skytable_static = format_ident ! ( "{}" , skytable. to_string( ) . to_uppercase( ) ) ;
140
143
let memory = format_ident ! ( "__{}_memory" , & sig. ident) ;
144
+ let memory_static = format_ident ! ( "{}" , memory. to_string( ) . to_uppercase( ) ) ;
141
145
142
146
let mut wrapper_sig = sig. clone ( ) ;
143
147
wrapper_sig. ident = wrapper. clone ( ) ;
@@ -251,6 +255,34 @@ pub fn dynamic_cache(arguments: TokenStream, input: TokenStream) -> TokenStream
251
255
#memory( #( #args) , * ) . await
252
256
}
253
257
258
+ #vis async fn #invalidate( key: String ) -> Result <( ) > {
259
+ use cached:: Cached ;
260
+ // check if the user did configure skytable
261
+ #[ cfg( feature = "caching-skytable" ) ]
262
+ if CONFIG . skytable_host( ) . is_some( ) {
263
+ // now check if the user did configure tls
264
+ match CONFIG . skytable_certificate( ) {
265
+ None => {
266
+ // tls is inactive so we do use the raw tcp stream
267
+ #skytable_static. get( ) . unwrap( ) . cache_remove( & key) . await ?;
268
+ } ,
269
+ Some ( _) => {
270
+ // tls is active so we use the tls cache
271
+ #skytable_tls_static. get( ) . unwrap( ) . cache_remove( & key) . await ?;
272
+ }
273
+ }
274
+ } else {
275
+ // otherwise use timed in memory caching
276
+ #memory_static. lock( ) . await . cache_remove( & key) ;
277
+ }
278
+
279
+ #[ cfg( not( feature = "caching-skytable" ) ) ]
280
+ #memory_static. lock( ) . await . cache_remove( & key) ;
281
+
282
+
283
+ Ok ( ( ) )
284
+ }
285
+
254
286
// create the wrapper containing the original data logic
255
287
#wrapper_sig #block
256
288
0 commit comments