diff --git a/Cargo.lock b/Cargo.lock index 30c190e..3354901 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -142,7 +142,7 @@ checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" [[package]] name = "icarus_models" -version = "0.5.5" +version = "0.5.6" dependencies = [ "josekit", "rand", @@ -150,6 +150,7 @@ dependencies = [ "serde_json", "tempfile", "time", + "utoipa", "uuid", ] @@ -161,6 +162,7 @@ checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", "hashbrown", + "serde", ] [[package]] @@ -527,6 +529,30 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +[[package]] +name = "utoipa" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" +dependencies = [ + "indexmap", + "serde", + "serde_json", + "utoipa-gen", +] + +[[package]] +name = "utoipa-gen" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d79d08d92ab8af4c5e8a6da20c47ae3f61a0f1dabc1997cdf2d082b757ca08b" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "uuid", +] + [[package]] name = "uuid" version = "1.17.0" diff --git a/Cargo.toml b/Cargo.toml index 1680962..3ddb8f5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "icarus_models" -version = "0.5.5" +version = "0.5.6" edition = "2024" rust-version = "1.88" description = "models used for the icarus project" @@ -13,6 +13,7 @@ rand = { version = "0.9.1" } time = { version = "0.3.41", features = ["formatting", "macros", "parsing", "serde"] } uuid = { version = "1.17.0", features = ["v4", "serde"] } josekit = { version = "0.10.3" } +utoipa = { version = "5.4.0", features = ["uuid", "time"] } [dev-dependencies] tempfile = { version = "3.20.0" } diff --git a/src/access_level.rs b/src/access_level.rs index 3c828e1..35901f2 100644 --- a/src/access_level.rs +++ b/src/access_level.rs @@ -2,7 +2,7 @@ use std::default::Default; use serde::{Deserialize, Serialize}; -#[derive(Clone, Debug, Deserialize, Serialize)] +#[derive(Clone, Debug, Deserialize, Serialize, utoipa::ToSchema)] pub struct AccessLevel { pub id: uuid::Uuid, pub level: String, diff --git a/src/coverart.rs b/src/coverart.rs index c0fcfe0..35c607b 100644 --- a/src/coverart.rs +++ b/src/coverart.rs @@ -2,7 +2,7 @@ use std::io::Read; use serde::{Deserialize, Serialize}; -#[derive(Clone, Debug, Default, Deserialize, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] pub struct CoverArt { pub id: uuid::Uuid, pub title: String, diff --git a/src/login_result.rs b/src/login_result.rs index 629d1c4..670be51 100644 --- a/src/login_result.rs +++ b/src/login_result.rs @@ -2,7 +2,7 @@ use std::default::Default; use serde::{Deserialize, Serialize}; -#[derive(Clone, Debug, Deserialize, Serialize)] +#[derive(Clone, Debug, Deserialize, Serialize, utoipa::ToSchema)] pub struct LoginResult { pub id: uuid::Uuid, pub username: String, diff --git a/src/song.rs b/src/song.rs index fe85843..2fbd3d9 100644 --- a/src/song.rs +++ b/src/song.rs @@ -7,7 +7,7 @@ use crate::types; use rand::Rng; use serde::{Deserialize, Serialize}; -#[derive(Clone, Debug, Default, Deserialize, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] pub struct Song { #[serde(skip_serializing_if = "init::is_uuid_nil")] #[serde(alias = "id")] diff --git a/src/user.rs b/src/user.rs index 5095618..8b95b2c 100644 --- a/src/user.rs +++ b/src/user.rs @@ -4,7 +4,7 @@ use crate::init; use serde::{Deserialize, Serialize}; -#[derive(Clone, Debug, Deserialize, Serialize)] +#[derive(Clone, Debug, Deserialize, Serialize, utoipa::ToSchema)] pub struct User { #[serde(skip_serializing_if = "init::is_uuid_nil")] pub id: uuid::Uuid,