5 个不稳定版本
0.3.1 | 2024 年 3 月 24 日 |
---|---|
0.3.0 | 2024 年 3 月 1 日 |
0.2.0 | 2023 年 8 月 12 日 |
0.1.1 | 2023 年 8 月 7 日 |
0.1.0 | 2023 年 8 月 6 日 |
10 在 #dto 中排名
219 每月下载量
用于 cypher-dto
65KB
1.5K SLoC
cypher-dto-macros
用于与 cypher-dto 包工作的宏。
包含三种类型的宏
-
派生宏,完成大部分工作。
#[derive(Node)] struct Person { id: String, name: String, #[name = "zip_code"] zip: String, } #[derive(Relation)] struct Knows;
这些将为结构体实现
cypher_dto::{FieldSet, NodeEntity, RelationEntity}
。使用派生宏时,有两个辅助属性进入作用域,分别是
#[id]
和#[name]
。#[id]
将字段标记为实体唯一标识字段集合的一部分。通过这种方式支持多值标识符。如果没有指定且存在名为id
的字段,则将其推断为唯一的 id 字段。id 字段集将有自己的结构体,例如PersonId
,可以通过person.identifier()
或person.into()
获取。#[name]
允许数据库中的属性名称与结构体中的名称不同。支持以下两种形式:#[name = "..."]
和#[name("...")]
,并且可以应用于结构体。为每个结构体也生成一个构建器,例如
PersonBuilder
。可以通过person.into_builder()
获取。 -
#[timestamps]
宏可以为结构体添加一个或两个时间戳字段。默认情况下,它会添加两个字段,分别是created_at
和updated_at
,类型为Option<DateTime<Utc>>
。可选的时间戳字段允许Person::new()
实现跳过将它们作为参数,这是在应用程序代码中创建 DTO 时的常用方法,在数据库创建之前。可以通过指定某些字符串值来控制添加哪些字段(
#[timestamps = "..."]
和#[timestamps("...")]
均受支持)。值必须是以下之一:full
(默认值)、short
(created,updated)、created_at
、updated_at
、created
或updated
。
依赖关系
~0.9–1.4MB
~28K SLoC