sea-query-derive 1.0.0

Derive macro for sea-query's Iden trait
Documentation
#![forbid(unsafe_code)]

use proc_macro::TokenStream;
#[cfg(feature = "sea-query")]
use syn::{DeriveInput, parse_macro_input};

#[cfg(feature = "sea-query")]
mod enum_def;
#[cfg(feature = "sea-query")]
mod iden;
mod raw_query;
mod raw_sql;
mod sqlx;

#[cfg(feature = "sea-query")]
#[proc_macro_derive(Iden, attributes(iden, method))]
pub fn derive_iden(input: TokenStream) -> TokenStream {
    let input: DeriveInput = parse_macro_input!(input);
    iden::expand(input)
}

#[cfg(feature = "sea-query")]
#[proc_macro_derive(IdenStatic, attributes(iden, method))]
pub fn derive_iden_static(input: TokenStream) -> TokenStream {
    let input: DeriveInput = parse_macro_input!(input);
    iden::iden_static::expand(input)
}

#[cfg(feature = "sea-query")]
#[proc_macro_attribute]
pub fn enum_def(args: TokenStream, input: TokenStream) -> TokenStream {
    enum_def::expand(args, input)
}

#[proc_macro]
pub fn raw_sql(input: TokenStream) -> TokenStream {
    match raw_sql::expand(input) {
        Ok(token_stream) => token_stream.into(),
        Err(err) => err.to_compile_error().into(),
    }
}

#[cfg(feature = "sea-query")]
#[proc_macro]
pub fn raw_query(input: TokenStream) -> TokenStream {
    match raw_query::expand(input) {
        Ok(token_stream) => token_stream.into(),
        Err(err) => err.to_compile_error().into(),
    }
}

#[proc_macro]
pub fn sqlx_sqlite_query(input: TokenStream) -> TokenStream {
    match sqlx::sqlite_query(input) {
        Ok(token_stream) => token_stream.into(),
        Err(err) => err.to_compile_error().into(),
    }
}

#[proc_macro]
pub fn sqlx_sqlite_query_as(input: TokenStream) -> TokenStream {
    match sqlx::sqlite_query_as(input) {
        Ok(token_stream) => token_stream.into(),
        Err(err) => err.to_compile_error().into(),
    }
}

#[proc_macro]
pub fn sqlx_mysql_query(input: TokenStream) -> TokenStream {
    match sqlx::mysql_query(input) {
        Ok(token_stream) => token_stream.into(),
        Err(err) => err.to_compile_error().into(),
    }
}

#[proc_macro]
pub fn sqlx_mysql_query_as(input: TokenStream) -> TokenStream {
    match sqlx::mysql_query_as(input) {
        Ok(token_stream) => token_stream.into(),
        Err(err) => err.to_compile_error().into(),
    }
}

#[proc_macro]
pub fn sqlx_postgres_query(input: TokenStream) -> TokenStream {
    match sqlx::postgres_query(input) {
        Ok(token_stream) => token_stream.into(),
        Err(err) => err.to_compile_error().into(),
    }
}

#[proc_macro]
pub fn sqlx_postgres_query_as(input: TokenStream) -> TokenStream {
    match sqlx::postgres_query_as(input) {
        Ok(token_stream) => token_stream.into(),
        Err(err) => err.to_compile_error().into(),
    }
}