Skip to main content

generate_versions

Attribute Macro generate_versions 

Source
#[generate_versions]
Expand description

Attribute macro for generating method variants with different executor types

This macro generates additional method variants that accept different executor types. Apply this macro to individual methods that need variants.

§Supported Variant Types

  • pool - Adds pool: &sqlx_data::Pool parameter and _with_pool suffix
  • tx - Adds transaction: &mut sqlx_data::Transaction<'_> parameter and _with_tx suffix
  • conn - Adds connection: &mut sqlx_data::Connection parameter and _with_conn suffix
  • exec - Adds executor: impl sqlx_data::Executor<'_> parameter and _with_executor suffix

§Usage

use sqlx_data_macros::{generate_versions, dml, repo};

#[repo]
trait UserRepo {
    // Original method with variants
    #[generate_versions(pool, tx)]
    #[dml("DELETE FROM users WHERE id = $1")]
    async fn delete_user(&self, id: i64) -> Result<QueryResult>;
}

§Generated Output

The macro generates additional methods alongside the original:

// Original (preserved)
#[dml("DELETE FROM users WHERE id = $1")]
async fn delete_user(&self, id: i64) -> Result<QueryResult>;

// Generated variants
#[dml("DELETE FROM users WHERE id = $1")]
async fn delete_user_with_pool(&self, pool: &sqlx_data::Pool, id: i64) -> Result<QueryResult>;

#[dml("DELETE FROM users WHERE id = $1")]
async fn delete_user_with_tx(&self, transaction: &mut sqlx_data::Transaction<'_>, id: i64) -> Result<QueryResult>;