From 2be0337da008f1018692234e8043220f6812377d Mon Sep 17 00:00:00 2001 From: phoenix Date: Sun, 31 May 2026 17:48:09 -0400 Subject: [PATCH] User utoipa (#19) Reviewed-on: http://git.kundeng.us/phoenix/textsender-models/pulls/19 --- Cargo.lock | 25 +++++++++++++++++++++++++ Cargo.toml | 2 +- src/message/mod.rs | 2 +- src/message/scheduling/mod.rs | 2 +- src/token/mod.rs | 4 ++-- src/user/mod.rs | 12 ++++++------ 6 files changed, 36 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 831bf3f..63c7f79 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -619,6 +619,7 @@ dependencies = [ "serde_json", "tempfile", "time", + "utoipa", "uuid", ] @@ -685,6 +686,30 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "utoipa" +version = "5.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bde15df68e80b16c7d16b9616e80770ad158988daa56a27dccd1e55558b0160" +dependencies = [ + "indexmap", + "serde", + "serde_json", + "utoipa-gen", +] + +[[package]] +name = "utoipa-gen" +version = "5.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba0b99ee52df3028635d93840c797102da61f8a7bb3cf751032455895b52ef8" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "uuid", +] + [[package]] name = "uuid" version = "1.23.1" diff --git a/Cargo.toml b/Cargo.toml index 27244fc..5408fa5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ uuid = { version = "1.23.1", features = ["v4", "serde"] } dotenvy = { version = "0.15.7" } const_format = { version = "0.2.36" } josekit = { version = "0.10.3" } -# utoipa = { version = "5.4.0", features = ["uuid", "time"] } +utoipa = { version = "5.4.0", features = ["uuid", "time"] } [dev-dependencies] tempfile = { version = "3.27.0" } diff --git a/src/message/mod.rs b/src/message/mod.rs index 847b773..4308f1f 100644 --- a/src/message/mod.rs +++ b/src/message/mod.rs @@ -3,7 +3,7 @@ pub mod scheduling; use serde::{Deserialize, Serialize}; -#[derive(Clone, Debug, Default, Deserialize, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] pub struct Message { pub id: uuid::Uuid, pub content: String, diff --git a/src/message/scheduling/mod.rs b/src/message/scheduling/mod.rs index 768b2b7..2146791 100644 --- a/src/message/scheduling/mod.rs +++ b/src/message/scheduling/mod.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -#[derive(Clone, Debug, Default, Deserialize, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] pub struct ScheduledMessageEvent { id: uuid::Uuid, contact_id: uuid::Uuid, diff --git a/src/token/mod.rs b/src/token/mod.rs index 864f594..2f713d8 100644 --- a/src/token/mod.rs +++ b/src/token/mod.rs @@ -12,7 +12,7 @@ pub struct Claims { pub issued_at: i64, } -#[derive(Clone, Debug, Default, Deserialize, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] pub struct LoginResult { pub user_id: uuid::Uuid, pub access_token: String, @@ -37,7 +37,7 @@ mod util { } } -#[derive(Debug)] +#[derive(Debug, utoipa::ToSchema)] pub struct TokenResource { pub message: String, pub issuer: String, diff --git a/src/user/mod.rs b/src/user/mod.rs index fc72f0f..2a891fc 100644 --- a/src/user/mod.rs +++ b/src/user/mod.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -#[derive(Clone, Debug, Default, Deserialize, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] pub struct User { pub id: uuid::Uuid, pub phone_number: String, @@ -18,7 +18,7 @@ pub struct User { pub salt_id: uuid::Uuid, } -#[derive(Clone, Debug, Default, Deserialize, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] pub struct ServiceUser { pub id: uuid::Uuid, pub username: String, @@ -32,7 +32,7 @@ pub struct ServiceUser { pub salt_id: uuid::Uuid, } -#[derive(Clone, Debug, Default, Deserialize, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] pub struct Organization { pub id: uuid::Uuid, pub name: String, @@ -40,7 +40,7 @@ pub struct Organization { pub created: Option, } -#[derive(Clone, Debug, Default, Deserialize, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] pub struct UserLoginHistory { pub id: uuid::Uuid, #[serde(with = "time::serde::rfc3339::option")] @@ -48,7 +48,7 @@ pub struct UserLoginHistory { pub user_id: uuid::Uuid, } -#[derive(Clone, Debug, Default, Deserialize, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] pub struct ServiceUserLoginHistory { pub id: uuid::Uuid, #[serde(with = "time::serde::rfc3339::option")] @@ -56,7 +56,7 @@ pub struct ServiceUserLoginHistory { pub service_user_id: uuid::Uuid, } -#[derive(Clone, Debug, Default, Deserialize, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] pub struct UserProfile { pub user_id: uuid::Uuid, pub phone_number: String,