use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Card {
pub card_id: Option<String>,
pub title: Option<String>,
pub description: Option<String>,
pub card_json: Option<serde_json::Value>,
pub status: Option<CardStatus>,
pub create_time: Option<String>,
pub update_time: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum CardStatus {
Draft,
Published,
Deleted,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CardElement {
pub element_id: Option<String>,
pub element_type: Option<String>,
pub content: Option<serde_json::Value>,
pub properties: Option<serde_json::Value>,
pub parent_id: Option<String>,
pub create_time: Option<String>,
pub update_time: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum UserIdType {
OpenId,
UnionId,
UserId,
}
impl std::fmt::Display for UserIdType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
UserIdType::OpenId => write!(f, "open_id"),
UserIdType::UnionId => write!(f, "union_id"),
UserIdType::UserId => write!(f, "user_id"),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CardSettings {
pub enable_interaction: Option<bool>,
pub theme: Option<String>,
pub custom_config: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BatchUpdateOperation {
pub operation: String,
pub path: String,
pub value: Option<serde_json::Value>,
}