@@ -34,35 +34,61 @@ lazy_static! {
3434 DatabaseConfiguration :: extract( ) . unwrap( ) ;
3535}
3636
37- #[ derive( Deserialize , Debug , Clone , Getters ) ]
38- #[ get = "pub" ]
39- pub struct Config {
40- #[ serde( default = "default_global_rate_limit" ) ]
41- global_rate_limit : u64 ,
42- oidc_provider : String ,
43- #[ serde( default = "default_oidc_audience" ) ]
44- oidc_audience : String ,
45- oidc_issuer : Option < String > ,
46- config_path : Option < String > ,
47- otlp_endpoint : Option < String > ,
48- #[ serde( default = "default_service_name" ) ]
49- service_name : String
50- }
37+ macro_rules! config {
38+ ( ( $( $ident: ident: $type: ty $( , ) ? ) * ) , ( $( $dident: ident: $dtype: ty = $default: expr $( , ) ?) * ) ) => {
39+ paste! {
40+ #[ derive( Deserialize , Debug , Clone , Getters ) ]
41+ #[ get = "pub" ]
42+ pub struct Config {
43+ $(
44+ $ident: $type,
45+ ) *
46+
47+ $(
48+ #[ serde( default = "default_" $dident) ]
49+ $dident: $dtype,
50+ ) *
51+ }
5152
52- #[ inline]
53- fn default_global_rate_limit ( ) -> u64 {
54- 10
55- }
5653
57- #[ inline]
58- fn default_oidc_audience ( ) -> String {
59- "feedback-fusion" . to_owned ( )
54+ $(
55+ #[ inline]
56+ fn [ <default_ $dident>] ( ) -> $dtype {
57+ $default. to_owned( )
58+ }
59+ ) *
60+ }
61+ } ;
6062}
6163
62- #[ inline]
63- fn default_service_name ( ) -> String {
64- "feedback-fusion" . to_owned ( )
65- }
64+ config ! (
65+ (
66+ oidc_provider: String ,
67+ oidc_issuer: Option <String >,
68+ config_path: Option <String >,
69+ otlp_endpoint: Option <String >,
70+ ) ,
71+
72+ (
73+ service_name: String = "feedback-fusion"
74+ oidc_audience: String = "feedback-fusion" ,
75+
76+ oidc_scope_api: String = "api:feedback-fusion" ,
77+ oidc_scope_write: String = "feedback-fusion:write" ,
78+ oidc_scope_read: String = "feedback-fusion:read" ,
79+
80+ oidc_scope_write_target: String = "feedback-fusion:writeTarget" ,
81+ oidc_scope_read_target: String = "feedback-fusion:readTarget"
82+
83+ oidc_scope_write_prompt: String = "feedback-fusion:writePrompt" ,
84+ oidc_scope_read_prompt: String = "feedback-fusion:readPrompt"
85+
86+ oidc_scope_write_field: String = "feedback-fusion:writeField" ,
87+ oidc_scope_read_field: String = "feedback-fusion:readField"
88+
89+ oidc_scope_read_response: String = "feedback-fusion:readResponse"
90+ )
91+ ) ;
6692
6793#[ derive( Debug , Clone , Deserialize , Serialize , PartialEq ) ]
6894pub struct InstanceConfig {
0 commit comments