Skip to main content

define_columns

Macro define_columns 

Source
macro_rules! define_columns {
    (
        $columns_struct:ident for $model:ident table = $table:literal {
            $( $field:ident => $name:literal ),* $(,)?
        }
    ) => { ... };
}
Expand description

为 Model 定义一组类型安全的字段标记

§示例

use sz_orm_query::define_columns;

struct User;

define_columns! {
    UserColumns for User table = "users" {
        Id => "id",
        Name => "name",
        Age => "age",
    }
}

生成如下代码:

#[derive(Clone, Copy)]
pub struct UserColumns;

impl UserColumns {
    pub const Id: UserColumn = UserColumn { name: "id", table: "users" };
    pub const Name: UserColumn = UserColumn { name: "name", table: "users" };
    pub const Age: UserColumn = UserColumn { name: "age", table: "users" };
}

#[derive(Clone, Copy)]
pub struct UserColumn {
    pub name: &'static str,
    pub table: &'static str,
}

impl Column<User> for UserColumn {
    fn name(&self) -> &'static str { self.name }
    fn table(&self) -> &'static str { self.table }
}