@@ -17,6 +17,7 @@ const DEFAULT_PORT: u16 = 5000;
17
17
mod env;
18
18
mod gist;
19
19
mod metrics;
20
+ mod request_database;
20
21
mod sandbox;
21
22
mod server_axum;
22
23
@@ -43,6 +44,7 @@ struct Config {
43
44
gh_token : Option < String > ,
44
45
metrics_token : Option < String > ,
45
46
feature_flags : FeatureFlags ,
47
+ request_db_path : Option < PathBuf > ,
46
48
port : u16 ,
47
49
root : PathBuf ,
48
50
}
@@ -98,12 +100,15 @@ impl Config {
98
100
99
101
let feature_flags = FeatureFlags { } ;
100
102
103
+ let request_db_path = env:: var_os ( "PLAYGROUND_REQUEST_DATABASE" ) . map ( Into :: into) ;
104
+
101
105
Self {
102
106
address,
103
107
cors_enabled,
104
108
gh_token,
105
109
metrics_token,
106
110
feature_flags,
111
+ request_db_path,
107
112
port,
108
113
root,
109
114
}
@@ -129,6 +134,17 @@ impl Config {
129
134
GhToken :: new ( & self . gh_token )
130
135
}
131
136
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
+
132
148
fn server_socket_addr ( & self ) -> SocketAddr {
133
149
let address = self . address . parse ( ) . expect ( "Invalid address" ) ;
134
150
SocketAddr :: new ( address, self . port )
@@ -293,7 +309,7 @@ struct ErrorJson {
293
309
error : String ,
294
310
}
295
311
296
- #[ derive( Debug , Clone , Deserialize ) ]
312
+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
297
313
struct CompileRequest {
298
314
target : String ,
299
315
#[ serde( rename = "assemblyFlavor" ) ]
@@ -324,7 +340,7 @@ struct CompileResponse {
324
340
stderr : String ,
325
341
}
326
342
327
- #[ derive( Debug , Clone , Deserialize ) ]
343
+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
328
344
struct ExecuteRequest {
329
345
channel : String ,
330
346
mode : String ,
@@ -347,7 +363,7 @@ struct ExecuteResponse {
347
363
stderr : String ,
348
364
}
349
365
350
- #[ derive( Debug , Clone , Deserialize ) ]
366
+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
351
367
struct FormatRequest {
352
368
#[ serde( default ) ]
353
369
channel : Option < String > ,
@@ -366,7 +382,7 @@ struct FormatResponse {
366
382
stderr : String ,
367
383
}
368
384
369
- #[ derive( Debug , Clone , Deserialize ) ]
385
+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
370
386
struct ClippyRequest {
371
387
#[ serde( default ) ]
372
388
channel : Option < String > ,
@@ -385,7 +401,7 @@ struct ClippyResponse {
385
401
stderr : String ,
386
402
}
387
403
388
- #[ derive( Debug , Clone , Deserialize ) ]
404
+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
389
405
struct MiriRequest {
390
406
code : String ,
391
407
#[ serde( default ) ]
@@ -400,7 +416,7 @@ struct MiriResponse {
400
416
stderr : String ,
401
417
}
402
418
403
- #[ derive( Debug , Clone , Deserialize ) ]
419
+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
404
420
struct MacroExpansionRequest {
405
421
code : String ,
406
422
#[ serde( default ) ]
@@ -462,7 +478,7 @@ struct MetaGistResponse {
462
478
code : String ,
463
479
}
464
480
465
- #[ derive( Debug , Clone , Deserialize ) ]
481
+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
466
482
struct EvaluateRequest {
467
483
version : String ,
468
484
optimize : String ,
0 commit comments