rust-db-blueprint 0.1.0

A Rust code generator — reads YAML draft files and generates Axum + SQLx models, migrations, handlers, routes, requests, tests, and seeds
Documentation
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>,
}