@@ -10,6 +10,7 @@ use std::{
1010 sync:: Arc ,
1111} ;
1212use tracing_subscriber:: fmt:: writer:: MakeWriterExt ;
13+ use utoipa:: ToSchema ;
1314
1415fn tls_cert ( ) -> String {
1516 "cert.pem" . to_string ( )
@@ -93,7 +94,7 @@ fn docker_log_config_config() -> std::collections::BTreeMap<String, String> {
9394 ] )
9495}
9596
96- #[ derive( Deserialize , Serialize , DefaultFromSerde ) ]
97+ #[ derive( ToSchema , Deserialize , Serialize , DefaultFromSerde ) ]
9798pub struct Tls {
9899 #[ serde( default ) ]
99100 pub enabled : bool ,
@@ -104,7 +105,7 @@ pub struct Tls {
104105}
105106
106107nestify:: nest! {
107- #[ derive( Deserialize , Serialize , DefaultFromSerde ) ]
108+ #[ derive( ToSchema , Deserialize , Serialize , DefaultFromSerde ) ]
108109 pub struct InnerConfig {
109110 #[ serde( default ) ]
110111 pub debug: bool ,
@@ -125,60 +126,70 @@ nestify::nest! {
125126 pub disk_check_concurrency: usize ,
126127
127128 #[ serde( default ) ]
128- pub postgres: #[ derive( Deserialize , Serialize , DefaultFromSerde ) ] pub struct Postgres {
129+ #[ schema( inline) ]
130+ pub postgres: #[ derive( ToSchema , Deserialize , Serialize , DefaultFromSerde ) ] pub struct Postgres {
129131 #[ serde( default = "postgres_enabled" ) ]
130132 pub enabled: bool ,
131133 #[ serde( default = "postgres_bind" ) ]
134+ #[ schema( value_type = String ) ]
132135 pub bind: SocketAddr ,
133136 #[ serde( default ) ]
134137 pub tls: Tls ,
135138 } ,
136139
137140 #[ serde( default ) ]
138- pub mariadb: #[ derive( Deserialize , Serialize , DefaultFromSerde ) ] pub struct Mariadb {
141+ #[ schema( inline) ]
142+ pub mariadb: #[ derive( ToSchema , Deserialize , Serialize , DefaultFromSerde ) ] pub struct Mariadb {
139143 #[ serde( default = "mariadb_enabled" ) ]
140144 pub enabled: bool ,
141145 #[ serde( default = "mariadb_bind" ) ]
146+ #[ schema( value_type = String ) ]
142147 pub bind: SocketAddr ,
143148 #[ serde( default ) ]
144149 pub tls: Tls ,
145150 } ,
146151
147152 #[ serde( default ) ]
148- pub mongodb: #[ derive( Deserialize , Serialize , DefaultFromSerde ) ] pub struct Mongodb {
153+ #[ schema( inline) ]
154+ pub mongodb: #[ derive( ToSchema , Deserialize , Serialize , DefaultFromSerde ) ] pub struct Mongodb {
149155 #[ serde( default = "mongodb_enabled" ) ]
150156 pub enabled: bool ,
151157 #[ serde( default = "mongodb_bind" ) ]
158+ #[ schema( value_type = String ) ]
152159 pub bind: SocketAddr ,
153160 #[ serde( default ) ]
154161 pub tls: Tls ,
155162 } ,
156163
157164 #[ serde( default ) ]
158- pub redis: #[ derive( Deserialize , Serialize , DefaultFromSerde ) ] pub struct Redis {
165+ #[ schema( inline) ]
166+ pub redis: #[ derive( ToSchema , Deserialize , Serialize , DefaultFromSerde ) ] pub struct Redis {
159167 #[ serde( default = "redis_enabled" ) ]
160168 pub enabled: bool ,
161169 #[ serde( default = "redis_bind" ) ]
170+ #[ schema( value_type = String ) ]
162171 pub bind: SocketAddr ,
163172 #[ serde( default ) ]
164173 pub tls: Tls ,
165174 } ,
166175
167176 #[ serde( default ) ]
168- pub database: #[ derive( Deserialize , Serialize , DefaultFromSerde ) ] pub struct DatabaseConfig {
177+ #[ schema( inline) ]
178+ pub database: #[ derive( ToSchema , Deserialize , Serialize , DefaultFromSerde ) ] pub struct DatabaseConfig {
169179 #[ serde( default = "database_url" ) ]
170180 pub url: String ,
171181 #[ serde( default = "database_migrate" ) ]
172182 pub migrate: bool ,
173183 } ,
174184
175185 #[ serde( default ) ]
176- pub docker: #[ derive( Deserialize , Serialize , DefaultFromSerde ) ] pub struct Docker {
186+ #[ schema( inline) ]
187+ pub docker: #[ derive( ToSchema , Deserialize , Serialize , DefaultFromSerde ) ] pub struct Docker {
177188 #[ serde( default = "docker_socket" ) ]
178189 pub socket: String ,
179190
180191 #[ serde( default ) ]
181- pub registries: std:: collections:: HashMap <String , #[ derive( Deserialize , Serialize , Clone ) ] pub struct DockerRegistry {
192+ pub registries: std:: collections:: HashMap <String , #[ derive( ToSchema , Deserialize , Serialize , Clone ) ] pub struct DockerRegistry {
182193 pub username: String ,
183194 pub password: String ,
184195 } >,
@@ -193,7 +204,8 @@ nestify::nest! {
193204 pub userns_mode: String ,
194205
195206 #[ serde( default ) ]
196- pub log_config: #[ derive( Deserialize , Serialize , DefaultFromSerde ) ] pub struct DockerLogConfig {
207+ #[ schema( inline) ]
208+ pub log_config: #[ derive( ToSchema , Deserialize , Serialize , DefaultFromSerde ) ] pub struct DockerLogConfig {
197209 #[ serde( default = "docker_log_config_type" ) ]
198210 pub r#type: String ,
199211 #[ serde( default = "docker_log_config_config" ) ]
@@ -202,7 +214,8 @@ nestify::nest! {
202214 } ,
203215
204216 #[ serde( default ) ]
205- pub api: #[ derive( Deserialize , Serialize , DefaultFromSerde ) ] pub struct Api {
217+ #[ schema( inline) ]
218+ pub api: #[ derive( ToSchema , Deserialize , Serialize , DefaultFromSerde ) ] pub struct Api {
206219 #[ serde( default = "api_bind" ) ]
207220 pub bind: String ,
208221 #[ serde( default ) ]
@@ -216,6 +229,7 @@ nestify::nest! {
216229 pub tls: Tls ,
217230
218231 #[ serde( default ) ]
232+ #[ schema( value_type = Vec <String >) ]
219233 pub trusted_proxies: Vec <cidr:: IpCidr >,
220234 } ,
221235 }
0 commit comments