@@ -32,43 +32,27 @@ enum QueryValue {
3232}
3333
3434async fn fetch_user ( keys : Vec < QueryKey > ) -> QueryResult < QueryValue , QueryError > {
35- if let Some ( QueryKey :: User ( id) ) = keys. first ( ) {
36- println ! ( "Fetching name of user {id}" ) ;
37- sleep ( Duration :: from_millis ( 650 ) ) . await ;
38- match id {
39- 0 => Ok ( QueryValue :: UserName ( "Marc" . to_string ( ) ) ) ,
40- _ => Err ( QueryError :: UserNotFound ( * id) ) ,
41- }
42- } else {
43- Err ( QueryError :: Unknown )
35+ let Some ( QueryKey :: User ( id) ) = keys. first ( ) else {
36+ return Err ( QueryError :: Unknown ) ;
37+ } ;
38+ println ! ( "Fetching name of user {id}" ) ;
39+ sleep ( Duration :: from_millis ( 650 ) ) . await ;
40+ match id {
41+ 0 => Ok ( QueryValue :: UserName ( "Marc" . to_string ( ) ) ) ,
42+ _ => Err ( QueryError :: UserNotFound ( * id) ) ,
4443 }
4544}
4645
4746async fn fetch_user_age ( keys : Vec < QueryKey > ) -> QueryResult < QueryValue , QueryError > {
48- if let Some ( QueryKey :: User ( id) ) = keys. first ( ) {
49- println ! ( "Fetching age of user {id}" ) ;
50- sleep ( Duration :: from_millis ( 1000 ) ) . await ;
51- match id {
52- 0 => Ok ( QueryValue :: UserAge ( 0 ) ) ,
53- _ => Err ( QueryError :: UserNotFound ( * id) ) ,
54- }
55- } else {
56- Err ( QueryError :: Unknown )
57- }
58- }
59-
60- #[ derive( Debug ) ]
61- enum MutationError { }
62-
63- #[ derive( PartialEq , Debug ) ]
64- enum MutationValue {
65- UserUpdated ( usize ) ,
66- }
67-
68- async fn update_user ( ( id, _name) : ( usize , String ) ) -> MutationResult < MutationValue , MutationError > {
69- println ! ( "Mutating user" ) ;
47+ let Some ( QueryKey :: User ( id) ) = keys. first ( ) else {
48+ return Err ( QueryError :: Unknown ) ;
49+ } ;
50+ println ! ( "Fetching age of user {id}" ) ;
7051 sleep ( Duration :: from_millis ( 1000 ) ) . await ;
71- Ok ( MutationValue :: UserUpdated ( id) )
52+ match id {
53+ 0 => Ok ( QueryValue :: UserAge ( 0 ) ) ,
54+ _ => Err ( QueryError :: UserNotFound ( * id) ) ,
55+ }
7256}
7357
7458#[ allow( non_snake_case) ]
@@ -86,11 +70,9 @@ fn User(id: usize) -> Element {
8670}
8771
8872fn app ( ) -> Element {
89- let mutate = use_mutation ( update_user) ;
9073 let client = use_init_query_client :: < QueryValue , QueryError , QueryKey > ( ) ;
9174
9275 let refresh = move |_| async move {
93- mutate. mutate_async ( ( 0 , "Not Marc" . to_string ( ) ) ) . await ;
9476 client. invalidate_queries ( & [ QueryKey :: User ( 0 ) ] ) ;
9577 } ;
9678
0 commit comments