@@ -4,48 +4,43 @@ mod api;
44
55const GRAPHQL_SERVER_SCHEMA : & str = include_str ! ( "../../graphql/server-schema.json" ) ;
66
7- #[ tokio:: main( flavor = "current_thread" ) ]
7+ #[ tokio:: main]
88async fn main ( ) -> Result < ( ) , Box < dyn std:: error:: Error + Send + Sync > > {
9- let local = tokio:: task:: LocalSet :: new ( ) ;
10- local
11- . run_until ( async {
12- let port = std:: env:: var ( "PORT" ) . unwrap ( ) . parse ( ) . unwrap ( ) ;
13- let addr = std:: net:: SocketAddr :: from ( ( [ 0 , 0 , 0 , 0 ] , port) ) ;
14- let listener = tokio:: net:: TcpListener :: bind ( addr) . await ?;
15- let state = Arc :: new ( api:: state:: APIState {
16- graphql_resolvers_map : api:: generated:: create_resolvers_map ( ) ,
17- graphql_parse_registry : api:: generated:: create_parse_registry ( ) ,
18- graphql_registry : {
19- let mut registry = libgql:: parsers:: schema:: type_registry:: TypeRegistry :: new ( ) ;
20- libgql:: json:: parsers:: schema:: parse_server_schema (
21- & mut registry,
22- serde_json:: from_str :: < serde_json:: Value > ( GRAPHQL_SERVER_SCHEMA ) . unwrap ( ) ,
23- )
24- . unwrap ( ) ;
25- registry
26- } ,
27- } ) ;
28- loop {
29- let ( stream, _) = listener. accept ( ) . await ?;
9+ let port = std:: env:: var ( "PORT" ) . unwrap ( ) . parse ( ) . unwrap ( ) ;
10+ let addr = std:: net:: SocketAddr :: from ( ( [ 0 , 0 , 0 , 0 ] , port) ) ;
11+ let listener = tokio:: net:: TcpListener :: bind ( addr) . await ?;
12+ let state = Arc :: new ( api:: state:: APIState {
13+ graphql_resolvers_map : api:: generated:: create_resolvers_map ( ) ,
14+ graphql_parse_registry : api:: generated:: create_parse_registry ( ) ,
15+ graphql_registry : {
16+ let mut registry = libgql:: parsers:: schema:: server:: type_registry:: TypeRegistry :: new ( ) ;
17+ libgql:: json:: parsers:: schema:: parse_server_schema (
18+ & mut registry,
19+ serde_json:: from_str :: < serde_json:: Value > ( GRAPHQL_SERVER_SCHEMA ) . unwrap ( ) ,
20+ )
21+ . unwrap ( ) ;
22+ registry
23+ } ,
24+ } ) ;
25+ loop {
26+ let ( stream, _) = listener. accept ( ) . await ?;
3027
31- let io = hyper_util:: rt:: TokioIo :: new ( stream) ;
32- let local_state = state. clone ( ) ;
28+ let io = hyper_util:: rt:: TokioIo :: new ( stream) ;
29+ let local_state = state. clone ( ) ;
3330
34- tokio:: task:: spawn_local ( async move {
35- let s = local_state;
36- if let Err ( err) = hyper:: server:: conn:: http1:: Builder :: new ( )
37- . serve_connection (
38- io,
39- hyper:: service:: service_fn ( async |request| {
40- api:: root_handler ( & s, request) . await
41- } ) ,
42- )
43- . await
44- {
45- eprintln ! ( "Error serving connection: {:?}" , err) ;
46- }
47- } ) ;
31+ tokio:: task:: spawn ( async move {
32+ let s = local_state;
33+ if let Err ( err) = hyper:: server:: conn:: http1:: Builder :: new ( )
34+ . serve_connection (
35+ io,
36+ hyper:: service:: service_fn ( async |request| {
37+ api:: root_handler ( & s, request) . await
38+ } ) ,
39+ )
40+ . await
41+ {
42+ eprintln ! ( "Error serving connection: {:?}" , err) ;
4843 }
49- } )
50- . await
44+ } ) ;
45+ }
5146}
0 commit comments