use serde::{Deserialize, Serialize}; use surrealdb::sql::Thing; use utoipa::ToSchema; use validator::Validate; #[derive(Clone, Debug, Serialize, Deserialize, ToSchema, Validate)] pub struct PermissionsRequestDto { #[validate(length(min = 1, message = "Permission name must not be empty"))] pub name: String, } #[derive(Clone, Debug, Serialize, Deserialize, ToSchema, Validate)] pub struct PermissionsUpdateRequestDto { #[validate(length(min = 1, message = "Permission name must not be empty"))] #[serde(skip_serializing_if = "Option::is_none")] pub name: Option, } #[derive(Clone, Debug, Serialize, Deserialize, ToSchema)] pub struct PermissionsItemDto { pub id: String, pub name: String, pub created_at: Option, pub updated_at: Option, } impl PermissionsItemDto { pub fn from(dto: &PermissionsQueryDto) -> Self { Self { id: dto.id.as_ref().map(|id| id.id.to_raw()).unwrap_or_default(), name: dto.name.clone().unwrap_or_default(), created_at: dto.created_at.clone(), updated_at: dto.updated_at.clone(), } } } #[derive(Clone, Debug, Serialize, Deserialize)] pub struct PermissionsQueryDto { pub id: Option, pub name: Option, pub created_at: Option, pub updated_at: Option, }