sql-macros-derive 0.2.0

Auto generate sql queries for CRUD on sqlx
Documentation
use quote::quote;

use crate::model::TableModel;

pub fn expand(model: &TableModel) -> darling::Result<proc_macro2::TokenStream> {
    let struct_name = &model.struct_name;
    let table_name = &model.table_name;
    let sql_columns = model.sql_columns();
    let query = format!("SELECT {sql_columns} FROM {table_name}");

    Ok(quote! {
        impl #struct_name {
            #[doc = #query]
            pub async fn select_all(pool: &sqlx::PgPool) -> Result<Vec<#struct_name>, sqlx::Error> {
                let object = sqlx::query_as!(#struct_name, #query)
                    .fetch_all(pool)
                    .await?;
                Ok(object)
            }
        }
    })
}