From f9dafdfc88d333f865aea29707ff02c6d261fe57 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sun, 8 Dec 2024 22:03:58 +0000 Subject: [PATCH] Make path params work with aide --- backend/sync_server/src/server/create_document.rs | 10 +++++++++- backend/sync_server/src/server/delete_document.rs | 14 +++++++++++++- .../src/server/fetch_latest_document_version.rs | 14 +++++++++++++- .../src/server/fetch_latest_documents.rs | 10 +++++++++- backend/sync_server/src/server/update_document.rs | 14 +++++++++++++- 5 files changed, 57 insertions(+), 5 deletions(-) diff --git a/backend/sync_server/src/server/create_document.rs b/backend/sync_server/src/server/create_document.rs index 4f60654..3dd5a89 100644 --- a/backend/sync_server/src/server/create_document.rs +++ b/backend/sync_server/src/server/create_document.rs @@ -7,6 +7,8 @@ use axum_extra::{ headers::{authorization::Bearer, Authorization}, TypedHeader, }; +use schemars::JsonSchema; +use serde::Deserialize; use sync_lib::base64_to_bytes; use super::{auth::auth, requests::CreateDocumentVersion}; @@ -16,10 +18,16 @@ use crate::{ errors::{client_error, server_error, SyncServerError}, }; +// This is required for aide to infer the path parameter types and names +#[derive(Deserialize, JsonSchema)] +pub struct PathParams { + vault_id: VaultId, +} + #[axum::debug_handler] pub async fn create_document( TypedHeader(auth_header): TypedHeader>, - Path(vault_id): Path, + Path(PathParams { vault_id }): Path, State(state): State, Json(request): Json, ) -> Result, SyncServerError> { diff --git a/backend/sync_server/src/server/delete_document.rs b/backend/sync_server/src/server/delete_document.rs index f9cd0a3..54922f0 100644 --- a/backend/sync_server/src/server/delete_document.rs +++ b/backend/sync_server/src/server/delete_document.rs @@ -7,6 +7,8 @@ use axum_extra::{ headers::{authorization::Bearer, Authorization}, TypedHeader, }; +use schemars::JsonSchema; +use serde::Deserialize; use super::{auth::auth, requests::DeleteDocumentVersion}; use crate::{ @@ -15,10 +17,20 @@ use crate::{ errors::{not_found_error, server_error, SyncServerError}, }; +// This is required for aide to infer the path parameter types and names +#[derive(Deserialize, JsonSchema)] +pub struct PathParams { + vault_id: VaultId, + document_id: DocumentId, +} + #[axum::debug_handler] pub async fn delete_document( TypedHeader(auth_header): TypedHeader>, - Path((vault_id, document_id)): Path<(VaultId, DocumentId)>, + Path(PathParams { + vault_id, + document_id, + }): Path, State(state): State, Json(request): Json, ) -> Result<(), SyncServerError> { diff --git a/backend/sync_server/src/server/fetch_latest_document_version.rs b/backend/sync_server/src/server/fetch_latest_document_version.rs index e741b99..3336830 100644 --- a/backend/sync_server/src/server/fetch_latest_document_version.rs +++ b/backend/sync_server/src/server/fetch_latest_document_version.rs @@ -7,6 +7,8 @@ use axum_extra::{ headers::{authorization::Bearer, Authorization}, TypedHeader, }; +use schemars::JsonSchema; +use serde::Deserialize; use super::auth::auth; use crate::{ @@ -15,10 +17,20 @@ use crate::{ errors::{not_found_error, server_error, SyncServerError}, }; +// This is required for aide to infer the path parameter types and names +#[derive(Deserialize, JsonSchema)] +pub struct PathParams { + vault_id: VaultId, + document_id: DocumentId, +} + #[axum::debug_handler] pub async fn fetch_latest_document_version( TypedHeader(auth_header): TypedHeader>, - Path((vault_id, document_id)): Path<(VaultId, DocumentId)>, + Path(PathParams { + vault_id, + document_id, + }): Path, State(state): State, ) -> Result, SyncServerError> { auth(&state, auth_header.token())?; diff --git a/backend/sync_server/src/server/fetch_latest_documents.rs b/backend/sync_server/src/server/fetch_latest_documents.rs index 7ba78c1..d5235a7 100644 --- a/backend/sync_server/src/server/fetch_latest_documents.rs +++ b/backend/sync_server/src/server/fetch_latest_documents.rs @@ -6,6 +6,8 @@ use axum_extra::{ headers::{authorization::Bearer, Authorization}, TypedHeader, }; +use schemars::JsonSchema; +use serde::Deserialize; use super::auth::auth; use crate::{ @@ -14,10 +16,16 @@ use crate::{ errors::{server_error, SyncServerError}, }; +// This is required for aide to infer the path parameter types and names +#[derive(Deserialize, JsonSchema)] +pub struct PathParams { + vault_id: VaultId, +} + #[axum::debug_handler] pub async fn fetch_latest_documents( TypedHeader(auth_header): TypedHeader>, - Path(vault_id): Path, + Path(PathParams { vault_id }): Path, State(state): State, ) -> Result>, SyncServerError> { auth(&state, auth_header.token())?; diff --git a/backend/sync_server/src/server/update_document.rs b/backend/sync_server/src/server/update_document.rs index f6b9f6d..dc26f9d 100644 --- a/backend/sync_server/src/server/update_document.rs +++ b/backend/sync_server/src/server/update_document.rs @@ -7,6 +7,8 @@ use axum_extra::{ headers::{authorization::Bearer, Authorization}, TypedHeader, }; +use schemars::JsonSchema; +use serde::Deserialize; use sync_lib::{base64_to_bytes, base64_to_string}; use super::{auth::auth, requests::UpdateDocumentVersion}; @@ -16,10 +18,20 @@ use crate::{ errors::{client_error, not_found_error, server_error, SyncServerError}, }; +// This is required for aide to infer the path parameter types and names +#[derive(Deserialize, JsonSchema)] +pub struct PathParams { + vault_id: VaultId, + document_id: DocumentId, +} + #[axum::debug_handler] pub async fn update_document( TypedHeader(auth_header): TypedHeader>, - Path((vault_id, document_id)): Path<(VaultId, DocumentId)>, + Path(PathParams { + vault_id, + document_id, + }): Path, State(state): State, Json(request): Json, ) -> Result, SyncServerError> {