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