45 lines
1.2 KiB
Rust
45 lines
1.2 KiB
Rust
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<String>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, ToSchema)]
|
|
pub struct PermissionsItemDto {
|
|
pub id: String,
|
|
pub name: String,
|
|
pub created_at: Option<String>,
|
|
pub updated_at: Option<String>,
|
|
}
|
|
|
|
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<Thing>,
|
|
pub name: Option<String>,
|
|
pub created_at: Option<String>,
|
|
pub updated_at: Option<String>,
|
|
}
|