use axum::http::StatusCode;
use docbox_core::database::models::document_box::DocumentBox;
use garde::Validate;
use serde::{Deserialize, Serialize};
use thiserror::Error;
use utoipa::ToSchema;
use crate::error::HttpError;
#[derive(Default, Debug, Validate, Deserialize, Serialize, ToSchema)]
#[serde(default)]
pub struct TenantDocumentBoxesRequest {
#[garde(skip)]
pub query: Option<String>,
#[garde(skip)]
pub size: Option<u16>,
#[garde(skip)]
pub offset: Option<u64>,
}
#[derive(Debug, Serialize, ToSchema)]
pub struct TenantDocumentBoxesResponse {
pub results: Vec<DocumentBox>,
pub total: i64,
}
#[derive(Debug, Serialize, ToSchema)]
pub struct TenantStatsResponse {
pub total_files: i64,
pub total_links: i64,
pub total_folders: i64,
pub file_size: i64,
}
#[derive(Debug, Error)]
pub enum HttpAdminError {
#[error("user not found")]
UnknownUser,
#[error(
"user is attached to resources, all resources must be deleted or detached before the user can be deleted"
)]
UserResourcesAttached,
}
impl HttpError for HttpAdminError {
fn status(&self) -> axum::http::StatusCode {
match self {
HttpAdminError::UnknownUser => StatusCode::NOT_FOUND,
HttpAdminError::UserResourcesAttached => StatusCode::BAD_REQUEST,
}
}
}