Derive Macro GenSelect

Source
#[derive(GenSelect)]
{
    // Attributes available to this derive:
    #[select]
}
Expand description

过程宏入口点,用于处理 #[select(...)] 属性宏。

此宏处理结构体定义上的 #[select(...)] 属性,用于生成符合 SelectAttributeMacro trait 的实现。这允许在结构体字段级别上定义如何处理 SQL 字段,例如忽略某些字段, 或将字段重命名。

字段宏参数:

  • ignore - 忽略该字段
  • rename - 字段重命名

§返回值

返回 TokenStream,包含了生成的 trait 实现代码。

§使用示例

use sql_tool_core::SelectAttributeMacro;

#[derive(GenSelect, Debug)]
struct MyStruct {
    field1: i32,
    #[select(ignore)]
    field2: i32,
    #[select(rename = "NULL::varchar as city_name")]
    field3: i32,
    #[select(rename = "CASE WHEN f.follower_id IS NOT NULL THEN TRUE ELSE FALSE END AS is_followed")]
    field4: bool,
}

MyStruct::generate_fields_clause(); // 输出:["field1", "NULL::varchar as city_name", "CASE WHE..."]