use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Statement {
Query(QueryStatement),
Validate(ValidateStatement),
Save(SaveStatement),
Find(FindStatement),
Update(UpdateStatement),
Delete(DeleteStatement),
Send(SendStatement),
Notify(NotifyStatement),
Dispatch(DispatchStatement),
Fire(FireStatement),
Render(RenderStatement),
Redirect(RedirectStatement),
Respond(RespondStatement),
Resource(ResourceStatement),
Flash(FlashStatement),
Inertia(InertiaStatement),
Eloquent(EloquentStatement),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct QueryStatement {
pub model: Option<String>,
pub methods: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidateStatement {
pub fields: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SaveStatement {
pub model: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FindStatement {
pub model: Option<String>,
pub key: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateStatement {
pub model: Option<String>,
pub columns: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DeleteStatement {
pub model: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SendStatement {
pub class: String,
pub to: Option<String>,
pub data: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NotifyStatement {
pub model: Option<String>,
pub notification: String,
pub data: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DispatchStatement {
pub job: String,
pub data: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FireStatement {
pub event: String,
pub data: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RenderStatement {
pub view: String,
pub data: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RedirectStatement {
pub route: String,
pub params: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RespondStatement {
pub status: Option<u16>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceStatement {
pub model: Option<String>,
pub collection: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FlashStatement {
pub reference: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InertiaStatement {
pub component: String,
pub data: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EloquentStatement {
pub operation: String,
pub model: Option<String>,
pub columns: Vec<String>,
}