Skip to main content

premix_query

Macro premix_query 

Source
premix_query!() { /* proc-macro */ }
Expand description

Compile-time query macro for true Zero-Overhead SQL generation.

This macro generates SQL at compile time, achieving 0% overhead compared to raw sqlx.

§Example

use premix_orm::prelude::*;

let user = premix_query!(User, FIND, filter_eq("id", user_id))
    .fetch_one(&pool)
    .await?;

Compile-time query macro for true Zero-Overhead SQL generation.

This macro generates SQL at compile time, achieving 0% overhead compared to raw sqlx.

§Example

use premix_orm::prelude::*;

// FIND (SELECT + LIMIT 1)
let user = premix_query!(User, FIND, filter_eq("id", 1))
    .fetch_one(&pool).await?;

// INSERT
let new_user = premix_query!(
    User, INSERT,
    set("name", "Bob"),
    set("age", 30)
).fetch_one(&pool).await?;

// UPDATE
premix_query!(
    User, UPDATE,
    set("age", 31),
    filter_eq("name", "Bob")
).execute(&pool).await?;

// DELETE
premix_query!(
    User, DELETE,
    filter_eq("id", 1)
).execute(&pool).await?;

// UPDATE + RETURNING *
let updated = premix_query!(
    User, UPDATE,
    set("age", 32),
    filter_eq("name", "Bob"),
    returning_all()
).fetch_one(&pool).await?;

§Supported Operations

  • SELECT - Generate SELECT query
  • FIND - Generate SELECT + LIMIT 1 query
  • INSERT - Generate INSERT query (with set assignments)
  • UPDATE - Generate UPDATE query (with set assignments and filters)
  • DELETE - Generate DELETE query (with filters)

§Supported Clauses

  • filter_eq/ne/gt/lt/gte/lte("col", val) - WHERE clause conditions
  • set("col", val) - SET/VALUES clause for INSERT/UPDATE
  • limit(N) - LIMIT N
  • offset(N) - OFFSET N
  • returning_all() - Append RETURNING * for UPDATE/DELETE