Skip to content

Commit 6c6883d

Browse files
authored
feat(common): utoipa derives for all typeshared types (#2011)
* feat(common): utoipa derives for all typeshared types * fix
1 parent 2faf6bf commit 6c6883d

File tree

10 files changed

+29
-6
lines changed

10 files changed

+29
-6
lines changed

common/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ pub enum DatabaseResource {
2828

2929
/// Holds the data for building a database connection string.
3030
#[derive(Clone, Serialize, Deserialize)]
31+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
3132
#[typeshare::typeshare]
3233
pub struct DatabaseInfo {
3334
engine: String,

common/src/models/certificate.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ pub struct AddCertificateRequest {
99
}
1010

1111
#[derive(Deserialize, Serialize, Debug)]
12+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
1213
#[typeshare::typeshare]
1314
pub struct DeleteCertificateRequest {
1415
#[serde(alias = "domain")]

common/src/models/deployment.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ use strum::{Display, EnumString};
88
use crossterm::style::Stylize;
99

1010
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Display, Serialize, EnumString)]
11-
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
1211
#[serde(rename_all = "lowercase")]
1312
#[strum(serialize_all = "lowercase")]
1413
#[strum(ascii_case_insensitive)]
14+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
1515
#[typeshare::typeshare]
1616
pub enum DeploymentState {
1717
Pending,
@@ -116,8 +116,8 @@ pub struct UploadArchiveResponse {
116116
}
117117

118118
#[derive(Deserialize, Serialize)]
119-
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
120119
#[serde(tag = "type", content = "content")]
120+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
121121
#[typeshare::typeshare]
122122
pub enum DeploymentRequest {
123123
/// Build an image from the source code in an attached zip archive
@@ -141,8 +141,8 @@ pub struct DeploymentRequestBuildArchive {
141141
}
142142

143143
#[derive(Deserialize, Serialize, Default)]
144-
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
145144
#[serde(tag = "type", content = "content")]
145+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
146146
#[typeshare::typeshare]
147147
pub enum BuildArgs {
148148
Rust(BuildArgsRust),

common/src/models/error.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ impl axum::response::IntoResponse for ApiError {
1616
}
1717

1818
#[derive(Serialize, Deserialize, Debug)]
19+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
1920
#[typeshare::typeshare]
2021
pub struct ApiError {
2122
pub message: String,

common/src/models/log.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use crossterm::style::Stylize;
44
use serde::{Deserialize, Serialize};
55

66
#[derive(Clone, Debug, Deserialize, Serialize)]
7+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
78
#[typeshare::typeshare]
89
pub struct LogItem {
910
pub timestamp: DateTime<Utc>,
@@ -40,6 +41,7 @@ impl std::fmt::Display for LogItem {
4041
}
4142

4243
#[derive(Debug, Serialize, Deserialize)]
44+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
4345
#[typeshare::typeshare]
4446
pub struct LogsResponse {
4547
pub logs: Vec<LogItem>,

common/src/models/project.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ pub struct ProjectUpdateRequest {
9292
#[derive(
9393
Debug, Default, Clone, Copy, PartialEq, Eq, Display, Serialize, Deserialize, EnumString,
9494
)]
95-
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
9695
#[serde(rename_all = "lowercase")]
9796
#[strum(serialize_all = "lowercase")]
97+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
9898
#[typeshare::typeshare]
9999
pub enum ComputeTier {
100100
#[default]

common/src/models/resource.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use serde::{Deserialize, Serialize};
22
use serde_json::Value;
33

44
#[derive(Clone, Debug, Serialize, Deserialize)]
5+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
56
#[typeshare::typeshare]
67
pub struct ProvisionResourceRequest {
78
/// The type of this resource
@@ -25,6 +26,7 @@ pub enum ResourceInput {
2526
)]
2627
#[serde(rename_all = "lowercase")]
2728
#[strum(serialize_all = "lowercase")]
29+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
2830
#[typeshare::typeshare]
2931
pub enum ResourceState {
3032
Authorizing,
@@ -36,6 +38,7 @@ pub enum ResourceState {
3638
}
3739

3840
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
41+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
3942
#[typeshare::typeshare]
4043
pub struct ResourceResponse {
4144
pub r#type: ResourceType,
@@ -47,6 +50,7 @@ pub struct ResourceResponse {
4750
}
4851

4952
#[derive(Debug, Serialize, Deserialize)]
53+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
5054
#[typeshare::typeshare]
5155
pub struct ResourceListResponse {
5256
pub resources: Vec<ResourceResponse>,
@@ -64,6 +68,7 @@ pub struct ResourceListResponse {
6468
strum::Display,
6569
strum::EnumString,
6670
)]
71+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
6772
#[typeshare::typeshare]
6873
// is a flat enum instead of nested enum to allow typeshare
6974
pub enum ResourceType {

common/src/models/team.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ use serde::{Deserialize, Serialize};
33
use strum::{Display, EnumString};
44

55
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
67
#[typeshare::typeshare]
78
pub struct TeamListResponse {
89
pub teams: Vec<TeamResponse>,
910
}
1011

1112
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
13+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
1214
#[typeshare::typeshare]
1315
pub struct TeamResponse {
1416
pub id: String,
@@ -19,13 +21,15 @@ pub struct TeamResponse {
1921
}
2022

2123
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
24+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
2225
#[typeshare::typeshare]
2326
pub struct TeamMembersResponse {
2427
pub members: Vec<TeamMembership>,
2528
pub invites: Vec<TeamInvite>,
2629
}
2730

2831
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
32+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
2933
#[typeshare::typeshare]
3034
pub struct TeamMembership {
3135
pub user_id: String,
@@ -40,6 +44,7 @@ pub struct TeamMembership {
4044
}
4145

4246
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
47+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
4348
#[typeshare::typeshare]
4449
pub struct TeamInvite {
4550
pub id: String,
@@ -52,6 +57,7 @@ pub struct TeamInvite {
5257
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Display, EnumString)]
5358
#[serde(rename_all = "lowercase")]
5459
#[strum(serialize_all = "lowercase")]
60+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
5561
#[typeshare::typeshare]
5662
pub enum TeamRole {
5763
Owner,
@@ -62,6 +68,7 @@ pub enum TeamRole {
6268
/// Provide user id to add user.
6369
/// Provide email address to invite user via email.
6470
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
71+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
6572
#[typeshare::typeshare]
6673
pub struct AddTeamMemberRequest {
6774
pub user_id: Option<String>,

common/src/models/telemetry.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const fn default_betterstack_host() -> Cow<'static, str> {
88

99
/// Status of a telemetry export configuration for an external sink
1010
#[derive(Eq, Clone, Debug, PartialEq, Serialize, Deserialize)]
11+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
1112
#[typeshare::typeshare]
1213
pub struct TelemetrySinkStatus {
1314
/// Indicates that the associated project is configured to export telemetry data to this sink
@@ -16,6 +17,7 @@ pub struct TelemetrySinkStatus {
1617

1718
/// A safe-for-display representation of the current telemetry export configuration for a given project
1819
#[derive(Eq, Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
20+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
1921
#[typeshare::typeshare]
2022
pub struct TelemetryConfigResponse {
2123
betterstack: Option<TelemetrySinkStatus>,
@@ -63,14 +65,15 @@ impl From<Vec<TelemetrySinkConfig>> for TelemetryConfigResponse {
6365
#[cfg_attr(any(test, feature = "integration-tests"), derive(strum::EnumIter))]
6466
#[serde(tag = "type", content = "content", rename_all = "snake_case")]
6567
#[strum(serialize_all = "snake_case")]
66-
#[typeshare::typeshare]
6768
#[cfg_attr(
6869
any(test, feature = "integration-tests"),
6970
strum_discriminants(derive(strum::EnumIter))
7071
)]
7172
#[strum_discriminants(derive(Serialize, Deserialize, strum::AsRefStr))]
7273
#[strum_discriminants(serde(rename_all = "snake_case"))]
7374
#[strum_discriminants(strum(serialize_all = "snake_case"))]
75+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
76+
#[typeshare::typeshare]
7477
pub enum TelemetrySinkConfig {
7578
/// [Betterstack](https://betterstack.com/docs/logs/open-telemetry/)
7679
Betterstack(BetterstackConfig),
@@ -102,6 +105,7 @@ impl TelemetrySinkConfigDiscriminants {
102105

103106
#[derive(Eq, Clone, PartialEq, Serialize, Deserialize)]
104107
#[cfg_attr(feature = "integration-tests", derive(Debug))]
108+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
105109
#[typeshare::typeshare]
106110
pub struct BetterstackConfig {
107111
#[serde(default = "default_betterstack_host")]
@@ -121,6 +125,7 @@ impl Default for BetterstackConfig {
121125

122126
#[derive(Eq, Clone, PartialEq, Serialize, Deserialize)]
123127
#[cfg_attr(feature = "integration-tests", derive(Debug))]
128+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
124129
#[typeshare::typeshare]
125130
pub struct DatadogConfig {
126131
pub api_key: String,
@@ -137,6 +142,7 @@ impl Default for DatadogConfig {
137142

138143
#[derive(Eq, Clone, PartialEq, Serialize, Deserialize)]
139144
#[cfg_attr(feature = "integration-tests", derive(Debug))]
145+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
140146
#[typeshare::typeshare]
141147
pub struct GrafanaCloudConfig {
142148
pub token: String,

common/src/models/user.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,9 @@ pub struct SubscriptionRequest {
124124
strum::Display,
125125
IntoStaticStr,
126126
)]
127-
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
128127
#[serde(rename_all = "lowercase")]
129128
#[strum(serialize_all = "lowercase")]
129+
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
130130
#[typeshare::typeshare]
131131
pub enum SubscriptionType {
132132
Pro,

0 commit comments

Comments
 (0)