@@ -17,6 +17,7 @@ const DEFAULT_PORT: u16 = 5000;
1717mod env;
1818mod gist;
1919mod metrics;
20+ mod request_database;
2021mod sandbox;
2122mod server_axum;
2223
@@ -43,6 +44,7 @@ struct Config {
4344 gh_token : Option < String > ,
4445 metrics_token : Option < String > ,
4546 feature_flags : FeatureFlags ,
47+ request_db_path : Option < PathBuf > ,
4648 port : u16 ,
4749 root : PathBuf ,
4850}
@@ -98,12 +100,15 @@ impl Config {
98100
99101 let feature_flags = FeatureFlags { } ;
100102
103+ let request_db_path = env:: var_os ( "PLAYGROUND_REQUEST_DATABASE" ) . map ( Into :: into) ;
104+
101105 Self {
102106 address,
103107 cors_enabled,
104108 gh_token,
105109 metrics_token,
106110 feature_flags,
111+ request_db_path,
107112 port,
108113 root,
109114 }
@@ -129,6 +134,17 @@ impl Config {
129134 GhToken :: new ( & self . gh_token )
130135 }
131136
137+ fn request_database ( & self ) -> request_database:: Database {
138+ use request_database:: Database ;
139+
140+ let request_db = match & self . request_db_path {
141+ Some ( path) => Database :: initialize ( path) ,
142+ None => Database :: initialize_memory ( ) ,
143+ } ;
144+
145+ request_db. expect ( "Unable to open request log database" )
146+ }
147+
132148 fn server_socket_addr ( & self ) -> SocketAddr {
133149 let address = self . address . parse ( ) . expect ( "Invalid address" ) ;
134150 SocketAddr :: new ( address, self . port )
@@ -293,7 +309,7 @@ struct ErrorJson {
293309 error : String ,
294310}
295311
296- #[ derive( Debug , Clone , Deserialize ) ]
312+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
297313struct CompileRequest {
298314 target : String ,
299315 #[ serde( rename = "assemblyFlavor" ) ]
@@ -324,7 +340,7 @@ struct CompileResponse {
324340 stderr : String ,
325341}
326342
327- #[ derive( Debug , Clone , Deserialize ) ]
343+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
328344struct ExecuteRequest {
329345 channel : String ,
330346 mode : String ,
@@ -347,7 +363,7 @@ struct ExecuteResponse {
347363 stderr : String ,
348364}
349365
350- #[ derive( Debug , Clone , Deserialize ) ]
366+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
351367struct FormatRequest {
352368 #[ serde( default ) ]
353369 channel : Option < String > ,
@@ -366,7 +382,7 @@ struct FormatResponse {
366382 stderr : String ,
367383}
368384
369- #[ derive( Debug , Clone , Deserialize ) ]
385+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
370386struct ClippyRequest {
371387 #[ serde( default ) ]
372388 channel : Option < String > ,
@@ -385,7 +401,7 @@ struct ClippyResponse {
385401 stderr : String ,
386402}
387403
388- #[ derive( Debug , Clone , Deserialize ) ]
404+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
389405struct MiriRequest {
390406 code : String ,
391407 #[ serde( default ) ]
@@ -400,7 +416,7 @@ struct MiriResponse {
400416 stderr : String ,
401417}
402418
403- #[ derive( Debug , Clone , Deserialize ) ]
419+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
404420struct MacroExpansionRequest {
405421 code : String ,
406422 #[ serde( default ) ]
@@ -462,7 +478,7 @@ struct MetaGistResponse {
462478 code : String ,
463479}
464480
465- #[ derive( Debug , Clone , Deserialize ) ]
481+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
466482struct EvaluateRequest {
467483 version : String ,
468484 optimize : String ,
0 commit comments