use serde::{Deserialize, Serialize};
#[cfg(feature = "openapi")]
use utoipa::ToSchema;
#[derive(Copy, Clone, Debug, Default, Deserialize, PartialEq, Eq)]
#[cfg_attr(feature = "client", derive(Serialize))]
#[cfg_attr(feature = "openapi", derive(ToSchema))]
#[serde(rename_all = "snake_case")]
pub enum TokenRetrievalMethod {
New,
Revoke,
#[default]
Reuse,
}
#[derive(Clone, Debug, Deserialize)]
#[cfg_attr(feature = "client", derive(Serialize))]
#[cfg_attr(feature = "openapi", derive(ToSchema))]
pub struct LoginRequest {
pub email: String,
#[cfg_attr(feature = "openapi", schema(format = "password"))]
pub password: String,
#[serde(default)]
pub method: TokenRetrievalMethod,
}
#[derive(Clone, Debug, Serialize)]
#[cfg_attr(feature = "client", derive(Deserialize))]
#[cfg_attr(feature = "openapi", derive(ToSchema))]
pub struct LoginResponse {
pub user_id: u64,
pub token: String,
}